/*
Copyright (c) 2024 Bytedance Ltd. and/or its affiliates
This file is part of ByteQC.

ByteQC includes code adapted from PySCF (https://github.com/pyscf/pyscf)
and GPU4PySCF (https://github.com/bytedance/gpu4pyscf),
which are licensed under the Apache License 2.0.
The original copyright:
    Copyright 2014-2020 The GPU4PySCF/PySCF Developers. All Rights Reserved.

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
*/

__device__ constexpr double POLY_SMALLX_R0[] = {
// // nroots = 1
//  5.0000000000000000e-01,
// // nroots = 2
//  1.3069360623708470e-01,  2.8693063937629151e+00,
// // nroots = 3
//  6.0376924683279896e-02,  7.7682335593104601e-01,  6.6627997193856743e+00,
// // nroots = 4
//  3.4819897306147152e-02,  3.8156718508004406e-01,  1.7373072694588976e+00,
//  1.1846305648154912e+01,
// // nroots = 5
//  2.2665926631698637e-02,  2.3127169214090557e-01,  8.5734602411883609e-01,
//  2.9735303812034606e+00,  1.8415185975905100e+01,
// nroots = 6
 1.5933294950708051e-02,  1.5647046776795465e-01,  5.2658326320347937e-01,
 1.4554949383527416e+00,  4.4772915489042244e+00,  2.6368226486820891e+01,
// nroots = 7
 1.1813808454790223e-02,  1.1337832545962978e-01,  3.6143546199827142e-01,
 8.9527303800610059e-01,  2.1671830744997034e+00,  6.2459217468839974e+00,
 3.5704994544697506e+01,
// nroots = 8
 9.1096129361797583e-03,  8.6130778786234360e-02,  2.6546936423055723e-01,
 6.1752374342048377e-01,  1.3290252120652055e+00,  2.9891077977621077e+00,
 8.2783291650163164e+00,  4.6425304325782918e+01,
// nroots = 9
 7.2388268576176690e-03,  6.7744856280706228e-02,  2.0415049332589749e-01,
 4.5633199434791133e-01,  9.1729173690437338e-01,  1.8243932992566771e+00,
 3.9197868892557834e+00,  1.0573996723107014e+01,  5.8529065180664020e+01,
// nroots = 10
 5.8908068184661301e-03,  5.4725924879562259e-02,  1.6232609261161096e-01,
 3.5315267858751925e-01,  6.7944242243948438e-01,  1.2573939988964797e+00,
 2.3797176188890110e+00,  4.9584689501831161e+00,  1.3132652926121416e+01,
 7.2016228580573340e+01,
// nroots = 11
 4.8873361261651269e-03,  4.5157008761019399e-02,  1.3240037096506918e-01,
 2.8253618374640332e-01,  5.2746670115882444e-01,  9.3166748944873068e-01,
 1.6361250128213276e+00,  2.9941113975093119e+00,  6.1047380665207358e+00,
 1.5954143802284950e+01,  8.6886766630657462e+01,
// // nroots = 12
//  4.1201918467690364e-03,  3.7911181291998906e-02,  1.1018828563899001e-01,
//  2.3179530831466225e-01,  4.2345630230694603e-01,  7.2421338523125789e-01,
//  1.2113317522159244e+00,  2.0525334008082456e+00,  3.6670630733185123e+00,
//  7.3583481234816475e+00,  1.9038376627614220e+01,  1.0314066236793083e+02,
// // nroots = 13
//  3.5205547919345487e-03,  3.2289011702114359e-02,  9.3214971024566495e-02,
//  1.9395959218782607e-01,  3.4863942062035819e-01,  5.8246762196717317e-01,
//  9.4178878042410219e-01,  1.5174658097736393e+00,  2.5060512608340129e+00,
//  4.3982595654500427e+00,  8.7191456120517863e+00,  2.2385292804867444e+01,
//  1.2077790499430500e+02,
// // nroots = 14
//  3.0429596866636517e-03,  2.7836958317494689e-02,  7.9934050123079720e-02,
//  1.6491083995350633e-01,  2.9275174955113165e-01,  4.8056334796006994e-01,
//  7.5805833071173867e-01,  1.1792349429563096e+00,  1.8494738526884431e+00,
//  2.9963211569901405e+00,  5.1875000243561145e+00,  1.0187030609882370e+01,
//  2.5994853806516272e+01,  1.3979848737030667e+02,
// // nroots = 15
//  2.6563882798588422e-03,  2.4250094342677907e-02,  6.9335687672495691e-02,
//  1.4207481953281492e-01,  2.4974878660205013e-01,  4.0442628385592422e-01,
//  6.2615572291363975e-01,  9.4929992942214436e-01,  1.4359478786754303e+00,
//  2.2069717422671000e+00,  3.5231083207720131e+00,  6.0346505430483566e+00,
//  1.1761935734646896e+01,  2.9867033445944998e+01,  1.6020240462202361e+02,
// // nroots = 16
//  2.3390891340939958e-03,  2.1317080945253201e-02,  6.0736095944339923e-02,
//  1.2376819871441241e-01,  2.1586001541338806e-01,  3.4579995866737606e-01,
//  5.2767337072352205e-01,  7.8452789304120707e-01,  1.1555935675460669e+00,
//  1.7115298466871347e+00,  2.5897019911803474e+00,  4.0862530420883099e+00,
//  6.9396189328516167e+00,  1.3443814172272431e+01,  3.4001813414873574e+01,
//  1.8198965332991693e+02,
// // nroots = 17
//  2.0754424341283091e-03,  1.8887592459816600e-02,  5.3658014548213083e-02,
//  1.0884885454501933e-01,  1.8862266668962116e-01,  2.9954903459405208e-01,
//  4.5185308380311651e-01,  6.6164964801649240e-01,  9.5509492609113844e-01,
//  1.3765373767867681e+00,  2.0057094213304625e+00,  2.9974863464885759e+00,
//  4.6856434232417712e+00,  7.9023399751558259e+00,  1.5232632558400770e+01,
//  3.8399180598022653e+01,  2.0516023103739158e+02,
// // nroots = 18
//  1.8539963414043730e-03,  1.6852276947378890e-02,  4.7759641118871647e-02,
//  9.6517662877457097e-02,  1.6636649640437165e-01,  2.6232651719296074e-01,
//  3.9202397022416274e-01,  5.6711232331318462e-01,  8.0578967544389657e-01,
//  1.1374575501399538e+00,  1.6118526781020055e+00,  2.3182957744259616e+00,
//  3.4301980006685246e+00,  5.3211990723247959e+00,  8.9227664393420767e+00,
//  1.7128366583322400e+01,  4.3059125399051126e+01,  2.2971413594275947e+02,
// // nroots = 19
//  1.6661998936375252e-03,  1.5130014686433138e-02,  4.2790695960997299e-02,
//  8.6200730889532062e-02,  1.4792271329238424e-01,  2.3186595750538547e-01,
//  3.4384897279841592e-01,  4.9253668994919914e-01,  6.9103506867637832e-01,
//  9.5970145594169631e-01,  1.3313348322389476e+00,  1.8613408062545294e+00,
//  2.6491513055224365e+00,  3.8877446160652291e+00,  5.9928609675506301e+00,
//  1.0000863418852175e+01,  1.9130998189134935e+01,  4.7981640664446111e+01,
//  2.5565136670034096e+02,
// // nroots = 20
//  1.5055636736750460e-03,  1.3659581309068787e-02,  3.8564342567293824e-02,
//  7.7476594928727063e-02,  1.3245147741657512e-01,  2.0658296700885234e-01,
//  3.0439699080823512e-01,  4.3248851020324230e-01,  6.0056920785975065e-01,
//  8.2323977038557739e-01,  1.1231054875957920e+00,  1.5365239604700129e+00,
//  2.1248567569558028e+00,  2.9981746126480338e+00,  4.3700575829188786e+00,
//  6.7005849497038312e+00,  1.1136604650698095e+01,  2.1240513731235975e+01,
//  5.3166720972969635e+01,  2.8297192228864293e+02,
// // nroots = 21
//  1.3670907867368810e-03,  1.2394054047073586e-02,  3.4938717738704779e-02,
//  7.0029665723141538e-02,  1.1933546517548120e-01,  1.8533975034810135e-01,
//  2.7162214849373179e-01,  3.8330281537433031e-01,  5.2775249147995862e-01,
//  7.1575249251405548e-01,  9.6345103210237271e-01,  1.2957976481725484e+00,
//  1.7528752562478540e+00,  2.4022925139112141e+00,  3.3652895418982895e+00,
//  4.8770850124786653e+00,  7.4443374249155490e+00,  1.2329970060272636e+01,
//  2.3456902742141821e+01,  5.8614362155227504e+01,  3.1167580192095022e+02,
// // nroots = 22
//  1.2468830266566071e-03,  1.1296974077260939e-02,  3.1804472951472436e-02,
//  6.3619574436888329e-02,  1.0811189954427899e-01,  1.6730017611467515e-01,
//  2.4405695487560791e-01,  3.4242592106441611e-01,  4.6811614228539372e-01,
//  6.2928567081422648e-01,  8.3781715700385528e-01,  1.1114655761383376e+00,
//  1.4776257531369692e+00,  1.9802761199884003e+00,  2.6935661694090105e+00,
//  3.7504379423093370e+00,  5.4087870441105492e+00,  8.2240924562866571e+00,
//  1.3580944085234208e+01,  2.5780157081866051e+01,  6.4324560961905945e+01,
//  3.4176300498341982e+02,
// // nroots = 23
//  1.1418631828867911e-03,  1.0339660911653800e-02,  2.9076181798097987e-02,
//  5.8060466666749251e-02,  9.8427835316294177e-02,  1.5183741234468401e-01,
//  2.2062391084280356e-01,  3.0802869139363409e-01,  4.1855186217289764e-01,
//  5.5849619707813158e-01,  7.3682598952358325e-01,  9.6656238513293491e-01,
//  1.2671304167611064e+00,  1.6684742780654425e+00,  2.2186404130584330e+00,
//  2.9986146322141836e+00,  4.1535747513207992e+00,  5.9651326283714123e+00,
//  9.0398297521904443e+00,  1.4889514507506986e+01,  2.8210270342431137e+01,
//  7.0297314830298916e+01,  3.7323353099141679e+02,
// // nroots = 24
//  1.0495759261988334e-03,  9.4992992354385325e-03,  2.6686295586583197e-02,
//  5.3206697955337431e-02,  9.0009970388381530e-02,  1.3847326383472791e-01,
//  2.0051570393946336e-01,  2.7876963531845217e-01,  3.7683660713108602e-01,
//  4.9967393580009961e-01,  6.5418912561449616e-01,  8.5017628790014732e-01,
//  1.1018357175881530e+00,  1.4303284449010452e+00,  1.8682541268706729e+00,
//  2.4679012551940342e+00,  3.3173886234481418e+00,  4.5746645870722178e+00,
//  6.5460972759896343e+00,  9.8915332475732622e+00,  1.6255671624263933e+01,
//  3.0747237423089796e+01,  7.6532621717181570e+01,  4.0608737955819714e+02,
// // nroots = 25
//  9.6804284738431225e-04,  8.7575539343254932e-03,  2.4580815547761405e-02,
//  4.8942752455150472e-02,  8.2643793737600238e-02,  1.2683727043286128e-01,
//  1.8311667069998602e-01,  2.5364456253704887e-01,  3.4134207545566181e-01,
//  4.5016937343104196e-01,  5.8554703532077257e-01,  7.5500228999917485e-01,
//  9.6918565647872623e-01,  1.2435195346086747e+00,  1.6009686601323014e+00,
//  2.0768956135707137e+00,  2.7280060286023411e+00,  3.6498491702681330e+00,
//  5.0136793389300003e+00,  7.1516614535243814e+00,  1.0779190085915269e+01,
//  1.7679407649692763e+01,  3.3391054222461705e+01,  8.3030479977314329e+01,
//  4.4032455037210190e+02,
// // nroots = 26
//  8.9565544579415254e-04,  8.0995527542570573e-03,  2.2716144347385257e-02,
//  4.5176009998213855e-02,  7.6158887961076630e-02,  1.1663848431984211e-01,
//  1.6794992820605648e-01,  2.3188820866452553e-01,  3.1085069091583328e-01,
//  4.0804436959930529e-01,  5.2779092420711327e-01,  6.7598365319794951e-01,
//  8.6078710994700591e-01,  1.0937368186145631e+00,  1.3915217951874832e+00,
//  1.7789794003868797e+00,  2.2943435454843417e+00,  2.9989128434113854e+00,
//  3.9959651029812480e+00,  5.4705964337941646e+00,  7.7818094208903092e+00,
//  1.1702789877157626e+01,  1.9160716276781699e+01,  3.6141717412159579e+01,
//  8.9790888273867822e+01,  4.7594504317971854e+02,
// // nroots = 27
//  8.3109512231001499e-04,  7.5131289999639658e-03,  2.1056762228657960e-02,
//  4.1831472800230959e-02,  7.0418380847064116e-02,  1.0764559262935150e-01,
//  1.5464094439970513e-01,  2.1290812273042228e-01,  2.8443540318795413e-01,
//  3.7185131035702607e-01,  4.7864959901382476e-01,  6.0951929142249150e-01,
//  7.7083812244638827e-01,  9.7142732494617945e-01,  1.2237373962444573e+00,
//  1.5457695551603108e+00,  1.9643035543347287e+00,  2.5205537131838662e+00,
//  3.2805879923783383e+00,  4.3557112384146945e+00,  5.9453975688643608e+00,
//  8.4365283763879209e+00,  1.2662324149042576e+01,  2.0699592351914731e+01,
//  3.8999224268126255e+01,  9.6813845511527404e+01,  5.1294885777328875e+02,
// // nroots = 28
//  7.7327265934614168e-04,  6.9882508946790788e-03,  1.9573489101087662e-02,
//  3.8847864637965371e-02,  6.5311250720158837e-02,  9.9672659091338711e-02,
//  1.4289191032726364e-01,  1.9623917849107639e-01,  2.6137903585278394e-01,
//  3.4048907901994535e-01,  4.3642861876513317e-01,  5.5298158998816316e-01,
//  6.9521214980263679e-01,  8.6999572387224722e-01,  1.0868307890446043e+00,
//  1.3591137397500017e+00,  1.7062043430069920e+00,  2.1568951145849722e+00,
//  2.7554903420777213e+00,  3.5730040885853245e+00,  4.7290670414068323e+00,
//  6.4380677720692976e+00,  9.1158078193148011e+00,  1.3657785936164659e+01,
//  2.2296031630204965e+01,  4.1963572543442723e+01,  1.0409935078594111e+02,
//  5.5133599398118213e+02,
// // nroots = 29
//  7.2128194564740754e-04,  6.5165867490334173e-03,  1.8242169108187746e-02,
//  3.6174706944078615e-02,  6.0746630485518080e-02,  9.2568726696294054e-02,
//  1.3246337474487627e-01,  1.8151161540602556e-01,  2.4111887374480270e-01,
//  3.1310655640913304e-01,  3.9984041967064188e-01,  5.0441237267625860e-01,
//  6.3090166347065468e-01,  7.8475672612934000e-01,  9.7336500077332955e-01,
//  1.2069236234854512e+00,  1.4998064894190901e+00,  1.8727788041083879e+00,
//  2.3567166558988348e+00,  2.9991242138096359e+00,  3.8761386831078006e+00,
//  5.1160156250390809e+00,  6.9485946963461123e+00,  9.8196390688702735e+00,
//  1.4689169468495249e+01,  2.3950030589416851e+01,  4.5034760371338379e+01,
//  1.1164740334510041e+02,  5.9110645166061056e+02,
// // nroots = 30
//  6.7436423858690424e-04,  6.0911701752723131e-03,  1.7042663914726686e-02,
//  3.3770100579734327e-02,  5.6649534609952659e-02,  8.6210122382939763e-02,
//  1.2316086250453281e-01,  1.6842816229032329e-01,  2.2320778254362922e-01,
//  2.8903640974860378e-01,  3.6789065056317111e-01,  4.6232515675023911e-01,
//  5.7566774544675881e-01,  7.1229929883268572e-01,  8.7806261702092869e-01,
//  1.0808722364210885e+00,  1.3316459770568605e+00,  1.6457673300845621e+00,
//  2.0454542277297771e+00,  2.5637374631125205e+00,  3.2514312621986456e+00,
//  4.1899732254466091e+00,  5.5165429945418198e+00,  7.4769680832474528e+00,
//  1.0548014896887539e+01,  1.5756469932714268e+01,  2.5661586286947824e+01,
//  4.8212786190469124e+01,  1.1945800255953849e+02,  6.3226023069200130e+02,
// // nroots = 31
//  6.3188030795311258e-04,  5.7061398509158142e-03,  1.5958074377719466e-02,
//  3.1599024262999015e-02,  5.2957614335718592e-02,  8.0494684232131519e-02,
//  1.1482497679045181e-01,  1.5674738549368780e-01,  2.0728641098615663e-01,
//  2.6774869366161896e-01,  3.3980028211803459e-01,  4.2557300057118946e-01,
//  5.2781244442213382e-01,  6.5008669605942015e-01,  7.9708543296514911e-01,
//  9.7505658701549880e-01,  1.1924574198151743e+00,  1.4609489039066195e+00,
//  1.7969565829860152e+00,  2.2241986989346771e+00,  2.7779321228812770e+00,
//  3.5123915105929826e+00,  4.5144922723425349e+00,  5.9306374689397341e+00,
//  8.0231793507898264e+00,  1.1300929244520692e+01,  1.6859683287482135e+01,
//  2.7430696248828827e+01,  5.1497648686801327e+01,  1.2753114789911722e+02,
//  6.7479733097461019e+02,
};

__device__ constexpr double POLY_SMALLX_R1[] = {
// // nroots = 1
// -2.0000000000000001e-01,
// // nroots = 2
// -2.9043023608241049e-02, -6.3762364305842567e-01,
// // nroots = 3
// -9.2887576435815231e-03, -1.1951128552785324e-01, -1.0250461106747191e+00,
// // nroots = 4
// -4.0964585066055473e-03, -4.4890257068240479e-02, -2.0438909052457618e-01,
// -1.3936830174299895e+00,
// // nroots = 5
// -2.1586596792093939e-03, -2.2025875441991007e-02, -8.1652002297032011e-02,
// -2.8319336963842484e-01, -1.7538272358004856e+00,
// nroots = 6
-1.2746635960566440e-03, -1.2517637421436372e-02, -4.2126661056278353e-02,
-1.1643959506821934e-01, -3.5818332391233798e-01, -2.1094581189456711e+00,
// nroots = 7
-8.1474541067518772e-04, -7.8191948592848132e-03, -2.4926583586087684e-02,
-6.1742968138351763e-02, -1.4946090168963472e-01, -4.3075322392303428e-01,
-2.4624134168756902e+00,
// nroots = 8
-5.5209775370786412e-04, -5.2200471991657189e-03, -1.6089052377609530e-02,
-3.7425681419423255e-02, -8.0546982549406398e-02, -1.8115804834921864e-01,
-5.0171691909189797e-01, -2.8136548076232071e+00,
// nroots = 9
-3.9128793824960370e-04, -3.6618841232814174e-03, -1.1035161801399865e-02,
-2.4666594289076287e-02, -4.9583337129966133e-02, -9.8615854013874446e-02,
-2.1188037239220453e-01, -5.7156739043821692e-01, -3.1637332530088660e+00,
// nroots = 10
-2.8735643016907951e-04, -2.6695573111981587e-03, -7.9183459810541930e-03,
-1.7226959931098500e-02, -3.3143532801926071e-02, -6.1336292629096574e-02,
-1.1608378628726883e-01, -2.4187653415527396e-01, -6.4061721590836185e-01,
-3.5129867600279674e+00,
// nroots = 11
-2.1721493894067231e-04, -2.0069781671564176e-03, -5.8844609317808515e-03,
-1.2557163722062370e-02, -2.3442964495947752e-02, -4.1407443975499142e-02,
-7.2716667236503454e-02, -1.3307161766708053e-01, -2.7132169184536603e-01,
-7.0907305787933106e-01, -3.8616340724736649e+00,
// // nroots = 12
// -1.6817109578649129e-04, -1.5473951547754655e-03, -4.4974810464893881e-03,
// -9.4610329924351942e-03, -1.7283930706405961e-02, -2.9559730009439098e-02,
// -4.9442112335343846e-02, -8.3776873502377364e-02, -1.4967604380891888e-01,
// -3.0034073973394482e-01, -7.7707659704547827e-01, -4.2098229537930951e+00,
// // nroots = 13
// -1.3285112422394522e-04, -1.2184532717779003e-03, -3.5175460763987357e-03,
// -7.3192298938802294e-03, -1.3156204551711631e-02, -2.1979910262912194e-02,
// -3.5539199261286875e-02, -5.7262860746175065e-02, -9.4567972106943884e-02,
// -1.6597205907358650e-01, -3.2902436271893531e-01, -8.4472803037235644e-01,
// -4.5576567922379247e+00,
// // nroots = 14
// -1.0677051532153163e-04, -9.7673537956121715e-04, -2.8047035130905162e-03,
// -5.7863452615265383e-03, -1.0271991212320409e-02, -1.6861871858248067e-02,
// -2.6598537919710129e-02, -4.1376664665133671e-02, -6.4893819392576949e-02,
// -1.0513407568386457e-01, -1.8201754471424963e-01, -3.5743967052218845e-01,
// -9.1210013356197439e-01, -4.9052100831686554e+00,
// // nroots = 15
// -8.7094697700289907e-05, -7.9508506041566917e-04, -2.2733012351637931e-03,
// -4.6581908043545877e-03, -8.1884848066245946e-03, -1.3259878159210630e-02,
// -2.0529695833234090e-02, -3.1124587849906373e-02, -4.7080258317227223e-02,
// -7.2359729254659014e-02, -1.1551174822203321e-01, -1.9785739485404447e-01,
// -3.8563723720153753e-01, -9.7924699822770489e-01, -5.2525378564597904e+00,
// // nroots = 16
// -7.1971973356738328e-05, -6.5591018293086772e-04, -1.8688029521335360e-03,
// -3.8082522681357664e-03, -6.6418466281042482e-03, -1.0639998728226956e-02,
// -1.6236103714569908e-02, -2.4139319785883295e-02, -3.5556725155263598e-02,
// -5.2662456821142609e-02, -7.9683138190164524e-02, -1.2573086283348647e-01,
// -2.1352673639543437e-01, -4.1365582068530554e-01, -1.0462096435345716e+00,
// -5.5996816409205206e+00,
// // nroots = 17
// -6.0157751713864028e-05, -5.4746644811062611e-04, -1.5553047695134228e-03,
// -3.1550392621744732e-03, -5.4673236721629326e-03, -8.6825807128710752e-03,
// -1.3097190834872943e-02, -1.9178250667144705e-02, -2.7683910901192418e-02,
// -3.9899634109761398e-02, -5.8136504966100365e-02, -8.6883662217060162e-02,
// -1.3581575139831223e-01, -2.2905333261321234e-01, -4.4152558140292086e-01,
// -1.1130197274789173e+00, -5.9466733634026543e+00,
// // nroots = 18
// -5.0794420312448578e-05, -4.6170621773640794e-04, -1.3084833183252507e-03,
// -2.6443195308892354e-03, -4.5579862028594974e-03, -7.1870278683002940e-03,
// -1.0740382745867472e-02, -1.5537323926388621e-02, -2.2076429464216344e-02,
// -3.1163220551779554e-02, -4.4160347345260427e-02, -6.3514952723998944e-02,
// -9.3978027415576024e-02, -1.4578627595410401e-01, -2.4445935450252265e-01,
// -4.6927031735129865e-01, -1.1797020657274282e+00, -6.2935379710345059e+00,
// // nroots = 19
// -4.3277919315260391e-05, -3.9298739445280882e-04, -1.1114466483375923e-03,
// -2.2389800231047289e-03, -3.8421483972047852e-03, -6.0224924027372853e-03,
// -8.9311421506082060e-03, -1.2793160777901276e-02, -1.7948962822763075e-02,
// -2.4927310543940165e-02, -3.4580125512699934e-02, -4.8346514448169599e-02,
// -6.8809124818764583e-02, -1.0098037963805791e-01, -1.5565872642988648e-01,
// -2.5976268620395260e-01, -4.9690904387363471e-01, -1.2462763808947042e+00,
// -6.6402952389698946e+00,
// // nroots = 20
// -3.7174411695680151e-05, -3.3727361256959967e-04, -9.5220598931589691e-04,
// -1.9130023439191868e-03, -3.2704068497919785e-03, -5.1008140002185764e-03,
// -7.5159750816848189e-03, -1.0678728646993636e-02, -1.4828869329870386e-02,
// -2.0326907910754997e-02, -2.7730999693723259e-02, -3.7938863221481801e-02,
// -5.2465598937180315e-02, -7.4029002781432929e-02, -1.0790265636836738e-01,
// -1.6544654196799582e-01, -2.7497789260982952e-01, -5.2445712916632037e-01,
// -1.3127585425424602e+00, -6.9869610441640235e+00,
// // nroots = 21
// -3.2166842040867788e-05, -2.9162480110761377e-04, -8.2208747620481830e-04,
// -1.6477568405445066e-03, -2.8078932982466163e-03, -4.3609353023082676e-03,
// -6.3911093763231001e-03, -9.0188897735136529e-03, -1.2417705681881379e-02,
// -1.6841235117977776e-02, -2.2669436049467591e-02, -3.0489356427589372e-02,
// -4.1244123676420094e-02, -5.6524529739087392e-02, -7.9183283338783286e-02,
// -1.1475494147008623e-01, -1.7516088058624821e-01, -2.9011694259465026e-01,
// -5.5192712334451344e-01, -1.3791614624759412e+00, -7.3335482804929466e+00,
// // nroots = 22
// -2.8019843295654089e-05, -2.5386458600586381e-04, -7.1470725733645919e-04,
// -1.4296533581323221e-03, -2.4294808886354828e-03, -3.7595545194309024e-03,
// -5.4844259522608520e-03, -7.6949645183014854e-03, -1.0519463871581881e-02,
// -1.4141251029533179e-02, -1.8827351842783266e-02, -2.4976754519962643e-02,
// -3.3205073104201552e-02, -4.4500586966031465e-02, -6.0529576840651925e-02,
// -8.4279504321558132e-02, -1.2154577627214719e-01, -1.8481106643340806e-01,
// -3.0518975472436422e-01, -5.7932937262620343e-01, -1.4454957519529426e+00,
// -7.6800675277172985e+00,
// // nroots = 23
// -2.4556197481436369e-05, -2.2235829917535054e-04, -6.2529423221716106e-04,
// -1.2486121863817042e-03, -2.1167276412106277e-03, -3.2653206955846024e-03,
// -4.7446002331785709e-03, -6.6242729331964312e-03, -9.0011153155461852e-03,
// -1.2010670904906056e-02, -1.5845720204808240e-02, -2.0786287852321179e-02,
// -2.7250116489486158e-02, -3.5881167270224570e-02, -4.7712697055020063e-02,
// -6.4486336176649103e-02, -8.9324188200447296e-02, -1.2828242211551424e-01,
// -1.9440494090732141e-01, -3.2020461306466635e-01, -6.0667248048238998e-01,
// -1.5117702114042777e+00, -8.0265275482025125e+00,
// // nroots = 24
// -2.1640740746367700e-05, -1.9586183990594915e-04, -5.5023289869243698e-04,
// -1.0970453186667512e-03, -1.8558756781109594e-03, -2.8551188419531528e-03,
// -4.1343444111229559e-03, -5.7478275323392201e-03, -7.7698269511564128e-03,
// -1.0302555377321641e-02, -1.3488435579680333e-02, -1.7529407997941181e-02,
// -2.2718262218312437e-02, -2.9491308142289591e-02, -3.8520703646817998e-02,
// -5.0884561962763600e-02, -6.8399765431920445e-02, -9.4322981176746756e-02,
// -1.3497107785545637e-01, -2.0394913912522192e-01, -3.3516848709822544e-01,
// -6.3396365820803702e-01, -1.5779922003542592e+00, -8.3729356609937557e+00,
// // nroots = 25
// -1.9169165294738857e-05, -1.7341690959060381e-04, -4.8674882272794860e-04,
// -9.6916341495347468e-04, -1.6365107670811929e-03, -2.5116291174824014e-03,
// -3.6260726871284363e-03, -5.0226646046940366e-03, -6.7592490189239962e-03,
// -8.9142450184364740e-03, -1.1594990798431138e-02, -1.4950540396023263e-02,
// -1.9191795177796560e-02, -2.4624149200171776e-02, -3.1702349705590126e-02,
// -4.1126645813281459e-02, -5.4019921358462203e-02, -7.2274240995408578e-02,
// -9.9280778988712889e-02, -1.4161705848563130e-01, -2.1344930863198552e-01,
// -3.5008728019193586e-01, -6.6120899450419213e-01, -1.6441679203428579e+00,
// -8.7192980271703355e+00,
// // nroots = 26
// -1.7060103729412429e-05, -1.5427719531918205e-04, -4.3268846375971913e-04,
// -8.6049542853740670e-04, -1.4506454849728882e-03, -2.2216854156160404e-03,
// -3.1990462515439329e-03, -4.4169182602766767e-03, -5.9209655412539672e-03,
// -7.7722737066534342e-03, -1.0053160461087871e-02, -1.2875879108532372e-02,
// -1.6395944951371543e-02, -2.0833082259325012e-02, -2.6505177051190154e-02,
// -3.3885321912131047e-02, -4.3701781818749362e-02, -5.7122149398312110e-02,
// -7.6113621009166618e-02, -1.0420183683417455e-01, -1.4822494135029160e-01,
// -2.2291028337443097e-01, -3.6496602431965136e-01, -6.8841366499351586e-01,
// -1.7103026337879585e+00, -9.0656198700898774e+00,
// // nroots = 27
// -1.5249451785504861e-05, -1.3785557798099020e-04, -3.8636260970014607e-04,
// -7.6754995963726534e-04, -1.2920803825149380e-03, -1.9751484886119542e-03,
// -2.8374485210955072e-03, -3.9065710592738039e-03, -5.2189982236321856e-03,
// -6.8229598230646988e-03, -8.7825614497949490e-03, -1.1183840209587001e-02,
// -1.4143818760484188e-02, -1.7824354586168430e-02, -2.2453897178797380e-02,
// -2.8362744131381849e-02, -3.6042267052013369e-02, -4.6248691985025070e-02,
// -6.0194275089510793e-02, -7.9921307126875132e-02, -1.0908986364888736e-01,
// -1.5479868580528294e-01, -2.3233622291821240e-01, -3.7980903398008681e-01,
// -7.1558209666286710e-01, -1.7764008350738973e+00, -9.4119056472163081e+00,
// // nroots = 28
// -1.3686241758338792e-05, -1.2368585654299255e-04, -3.4643343541748077e-04,
// -6.8757282545071452e-04, -1.1559513401798024e-03, -1.7641178600236939e-03,
// -2.5290603597745778e-03, -3.4732597963022371e-03, -4.6261776257129905e-03,
// -6.0263553808839881e-03, -7.7244003321262512e-03, -9.7872847785515603e-03,
// -1.2304639819515696e-02, -1.5398154404818535e-02, -1.9235943168931048e-02,
// -2.4055110438053130e-02, -3.0198306955875963e-02, -3.8175134771415438e-02,
// -4.8769740567747279e-02, -6.3239010417439373e-02, -8.3700301617820050e-02,
// -1.1394810216051854e-01, -1.6134173131530621e-01, -2.4173072453388778e-01,
// -3.9462002885318520e-01, -7.4271809811403044e-01, -1.8424663855918781e+00,
// -9.7581591855076493e+00,
// // nroots = 29
// -1.2329605908502692e-05, -1.1139464528262253e-04, -3.1183195056731187e-04,
// -6.1837105887313872e-04, -1.0384039399233859e-03, -1.5823713965178472e-03,
// -2.2643311922201071e-03, -3.1027626565132576e-03, -4.1216901494838072e-03,
// -5.3522488275065472e-03, -6.8348789687289208e-03, -8.6224337209616850e-03,
// -1.0784643820011191e-02, -1.3414644891099829e-02, -1.6638717961937256e-02,
// -2.0631173051033354e-02, -2.5637717767847696e-02, -3.2013312890741670e-02,
// -4.0285754801689486e-02, -5.1267080577942499e-02, -6.6258780907825651e-02,
// -8.7453258547676604e-02, -1.1877939651873697e-01, -1.6785707810034656e-01,
// -2.5109691399137180e-01, -4.0940223229772399e-01, -7.6982496361262176e-01,
// -1.9085026212837679e+00, -1.0104383789070267e+01,
// // nroots = 30
// -1.1146516340279409e-05, -1.0068049876483163e-04, -2.8169692421035848e-04,
// -5.5818348065676566e-04, -9.3635594396615962e-04, -1.4249607005444589e-03,
// -2.0357167356121128e-03, -2.7839365667822031e-03, -3.6893848354318877e-03,
// -4.7774613181587400e-03, -6.0808371993912582e-03, -7.6417381281031257e-03,
// -9.5151693462274187e-03, -1.1773542129465880e-02, -1.4513431686296341e-02,
// -1.7865656800348573e-02, -2.2010677306724968e-02, -2.7202765786521688e-02,
// -3.3809160788921939e-02, -4.2375825836570589e-02, -5.3742665490886701e-02,
// -6.9255755792505938e-02, -9.1182528835401983e-02, -1.2358624930987525e-01,
// -1.7434735366756263e-01, -2.6043751954899613e-01, -4.2415845102393096e-01,
// -7.9690555686725828e-01, -1.9745124390006361e+00, -1.0450582325487625e+01,
// // nroots = 31
// -1.0110084927249801e-05, -9.1298237614653030e-05, -2.5532919004351141e-04,
// -5.0558438820798421e-04, -8.4732182937149742e-04, -1.2879149477141043e-03,
// -1.8371996286472290e-03, -2.5079581678990048e-03, -3.3165825757785062e-03,
// -4.2839790985859027e-03, -5.4368045138885540e-03, -6.8091680091390315e-03,
// -8.4449991107541419e-03, -1.0401387136950723e-02, -1.2753366927442385e-02,
// -1.5600905392247981e-02, -1.9079318717042791e-02, -2.3375182462505910e-02,
// -2.8751305327776241e-02, -3.5587179182954835e-02, -4.4446913966100433e-02,
// -5.6198264169487720e-02, -7.2231876357480559e-02, -9.4890199503035746e-02,
// -1.2837086961263722e-01, -1.8081486791233109e-01, -2.6975493259971417e-01,
// -4.3889113998126128e-01, -8.2396237898882119e-01, -2.0404983663858753e+00,
// -1.0796757295593762e+01,
};

__device__ constexpr double POLY_SMALLX_W0[] = {
// // nroots = 1
//  1.0000000000000000e+00,
// // nroots = 2
//  6.5214515486254609e-01,  3.4785484513745385e-01,
// // nroots = 3
//  4.6791393457269104e-01,  3.6076157304813861e-01,  1.7132449237917036e-01,
// // nroots = 4
//  3.6268378337836199e-01,  3.1370664587788727e-01,  2.2238103445337448e-01,
//  1.0122853629037626e-01,
// // nroots = 5
//  2.9552422471475287e-01,  2.6926671930999635e-01,  2.1908636251598204e-01,
//  1.4945134915058059e-01,  6.6671344308688138e-02,
// nroots = 6
 2.4914704581340277e-01,  2.3349253653835481e-01,  2.0316742672306592e-01,
 1.6007832854334622e-01,  1.0693932599531843e-01,  4.7175336386511828e-02,
// nroots = 7
 2.1526385346315779e-01,  2.0519846372129560e-01,  1.8553839747793782e-01,
 1.5720316715819355e-01,  1.2151857068790319e-01,  8.0158087159760208e-02,
 3.5119460331751860e-02,
// nroots = 8
 1.8945061045506850e-01,  1.8260341504492358e-01,  1.6915651939500254e-01,
 1.4959598881657674e-01,  1.2462897125553388e-01,  9.5158511682492786e-02,
 6.2253523938647894e-02,  2.7152459411754096e-02,
// nroots = 9
 1.6914238296314360e-01,  1.6427648374583273e-01,  1.5468467512626524e-01,
 1.4064291467065065e-01,  1.2255520671147846e-01,  1.0094204410628717e-01,
 7.6425730254889052e-02,  4.9714548894969797e-02,  2.1616013526483312e-02,
// nroots = 10
 1.5275338713072584e-01,  1.4917298647260374e-01,  1.4209610931838204e-01,
 1.3168863844917664e-01,  1.1819453196151841e-01,  1.0193011981724044e-01,
 8.3276741576704755e-02,  6.2672048334109068e-02,  4.0601429800386939e-02,
 1.7614007139152118e-02,
// nroots = 11
 1.3925187285563198e-01,  1.3654149834601517e-01,  1.3117350478706238e-01,
 1.2325237681051242e-01,  1.1293229608053922e-01,  1.0041414444288096e-01,
 8.5941606217067729e-02,  6.9796468424520489e-02,  5.2293335152683286e-02,
 3.3774901584814152e-02,  1.4627995298272200e-02,
// // nroots = 12
//  1.2793819534675216e-01,  1.2583745634682830e-01,  1.2167047292780339e-01,
//  1.1550566805372560e-01,  1.0744427011596563e-01,  9.7618652104113884e-02,
//  8.6190161531953274e-02,  7.3346481411080300e-02,  5.9298584915436783e-02,
//  4.4277438817419808e-02,  2.8531388628933663e-02,  1.2341229799987200e-02,
// // nroots = 13
//  1.1832141527926228e-01,  1.1666044348529658e-01,  1.1336181654631966e-01,
//  1.0847184052857659e-01,  1.0205916109442542e-01,  9.4213800355914146e-02,
//  8.5045894313485235e-02,  7.4684149765659749e-02,  6.3274046329574840e-02,
//  5.0975825297147809e-02,  3.7962383294362766e-02,  2.4417851092631910e-02,
//  1.0551372617343006e-02,
// // nroots = 14
//  1.1004701301647520e-01,  1.0871119225829413e-01,  1.0605576592284642e-01,
//  1.0211296757806076e-01,  9.6930657997929923e-02,  9.0571744393032838e-02,
//  8.3113417228901212e-02,  7.4646214234568783e-02,  6.5272923966999602e-02,
//  5.5107345675716748e-02,  4.4272934759004227e-02,  3.2901427782304378e-02,
//  2.1132112592771261e-02,  9.1242825930945171e-03,
// // nroots = 15
//  1.0285265289355884e-01,  1.0176238974840550e-01,  9.9593420586795267e-02,
//  9.6368737174644253e-02,  9.2122522237786122e-02,  8.6899787201082976e-02,
//  8.0755895229420213e-02,  7.3755974737705204e-02,  6.5974229882180491e-02,
//  5.7493156217619065e-02,  4.8402672830594053e-02,  3.8799192569627050e-02,
//  2.8784707883323369e-02,  1.8466468311090958e-02,  7.9681924961666050e-03,
// // nroots = 16
//  9.6540088514727798e-02,  9.5638720079274861e-02,  9.3844399080804566e-02,
//  9.1173878695763891e-02,  8.7652093004403811e-02,  8.3311924226946749e-02,
//  7.8193895787070311e-02,  7.2345794108848505e-02,  6.5822222776361849e-02,
//  5.8684093478535544e-02,  5.0998059262376175e-02,  4.2835898022226683e-02,
//  3.4273862913021431e-02,  2.5392065309262059e-02,  1.6274394730905670e-02,
//  7.0186100094700964e-03,
// // nroots = 17
//  9.0956740330259869e-02,  9.0203044370640736e-02,  8.8701897835693863e-02,
//  8.6465739747035752e-02,  8.3513099699845661e-02,  7.9868444339771846e-02,
//  7.5561974660031936e-02,  7.0629375814255727e-02,  6.5111521554076415e-02,
//  5.9054135827524494e-02,  5.2507414572678109e-02,  4.5525611523353271e-02,
//  3.8166593796387517e-02,  3.0491380638446131e-02,  2.2563721985494969e-02,
//  1.4450162748595036e-02,  6.2291405559086847e-03,
// // nroots = 18
//  8.5983275670394751e-02,  8.5346685739338624e-02,  8.4078218979661931e-02,
//  8.2187266704339706e-02,  7.9687828912071601e-02,  7.6598410645870668e-02,
//  7.2941885005653059e-02,  6.8745323835736449e-02,  6.4039797355015485e-02,
//  5.8860144245324819e-02,  5.3244713977759921e-02,  4.7235083490265978e-02,
//  4.0875750923644892e-02,  3.4213810770307232e-02,  2.7298621498568779e-02,
//  2.0181515297735472e-02,  1.2915947284065574e-02,  5.5657196642450455e-03,
// // nroots = 19
//  8.1525029280385783e-02,  8.0982493770597103e-02,  7.9901033243527819e-02,
//  7.8287844658210953e-02,  7.6153663548446396e-02,  7.3512692584743453e-02,
//  7.0382507066898956e-02,  6.6783937979140409e-02,  6.2740933392133061e-02,
//  5.8280399146997203e-02,  5.3432019910332321e-02,  4.8228061860758682e-02,
//  4.2703158504674432e-02,  3.6894081594024741e-02,  3.0839500545175053e-02,
//  2.4579739738232374e-02,  1.8156577709613236e-02,  1.1613444716468675e-02,
//  5.0028807496393457e-03,
// // nroots = 20
//  7.7505947978424805e-02,  7.7039818164247972e-02,  7.6110361900626242e-02,
//  7.4723169057968261e-02,  7.2886582395804062e-02,  7.0611647391286780e-02,
//  6.7912045815233898e-02,  6.4804013456601042e-02,  6.1306242492928938e-02,
//  5.7439769099391552e-02,  5.3227846983936823e-02,  4.8695807635072232e-02,
//  4.3870908185673269e-02,  3.8782167974472016e-02,  3.3460195282547844e-02,
//  2.7937006980023400e-02,  2.2245849194166958e-02,  1.6421058381907890e-02,
//  1.0498284531152813e-02,  4.5212770985331909e-03,
// // nroots = 21
//  7.3864234232172879e-02,  7.3460813453467527e-02,  7.2656175243804105e-02,
//  7.1454714265170985e-02,  6.9862992492594159e-02,  6.7889703376521948e-02,
//  6.5545624364908975e-02,  6.2843558045002579e-02,  5.9798262227586656e-02,
//  5.6426369358018383e-02,  5.2746295699174071e-02,  4.8778140792803244e-02,
//  4.4543577771965881e-02,  4.0065735180692265e-02,  3.5369071097592110e-02,
//  3.0479240699603467e-02,  2.5422959526113047e-02,  2.0227869569052644e-02,
//  1.4922443697357493e-02,  9.5362203017485027e-03,  4.1059986046490847e-03,
// // nroots = 22
//  7.0549157789354069e-02,  7.0197685473558216e-02,  6.9496491861572585e-02,
//  6.8449070269366655e-02,  6.7060638906293657e-02,  6.5338114879181439e-02,
//  6.3290079733203858e-02,  6.0926736701561970e-02,  5.8259859877595493e-02,
//  5.5302735563728056e-02,  5.2070096091704460e-02,  4.8578046448352036e-02,
//  4.4843984081970031e-02,  4.0886512310346221e-02,  3.6725347813808873e-02,
//  3.2381222812069822e-02,  2.7875782821281010e-02,  2.3231481902019211e-02,
//  1.8471481736814750e-02,  1.3619586755579985e-02,  8.7004813675248434e-03,
//  3.7454048031127776e-03,
// // nroots = 23
//  6.7518685849036461e-02,  6.7210613600678176e-02,  6.6595874768454882e-02,
//  6.5677274267781208e-02,  6.4459003467139064e-02,  6.2946621064394512e-02,
//  6.1147027724650478e-02,  5.9068434595546317e-02,  5.6720325843991233e-02,
//  5.4113415385856754e-02,  5.1259598007143019e-02,  4.8171895101712200e-02,
//  4.4864395277318128e-02,  4.1352190109678728e-02,  3.7651305357386068e-02,
//  3.3778627999106900e-02,  2.9751829552202756e-02,  2.5589286397130012e-02,
//  2.1309998754136500e-02,  1.6933514007836239e-02,  1.2479883770988685e-02,
//  7.9698982297246226e-03,  3.4303008681070483e-03,
// // nroots = 24
//  6.4737696812683918e-02,  6.4466164435950088e-02,  6.3924238584648185e-02,
//  6.3114192286254020e-02,  6.2039423159892665e-02,  6.0704439165893881e-02,
//  5.9114839698395635e-02,  5.7277292100403214e-02,  5.5199503699984165e-02,
//  5.2890189485193667e-02,  5.0359035553854473e-02,  4.7616658492490478e-02,
//  4.4674560856694280e-02,  4.1545082943464748e-02,  3.8241351065830709e-02,
//  3.4777222564770442e-02,  3.1167227832798090e-02,  2.7426509708356948e-02,
//  2.3570760839324380e-02,  1.9616160457355529e-02,  1.5579315722943849e-02,
//  1.1477234579234540e-02,  7.3275539012762625e-03,  3.1533460523058385e-03,
// // nroots = 25
//  6.2176616655347260e-02,  6.1936067420683243e-02,  6.1455899590316665e-02,
//  6.0737970841770218e-02,  5.9785058704265460e-02,  5.8600849813222444e-02,
//  5.7189925647728380e-02,  5.5557744806212520e-02,  5.3710621888996245e-02,
//  5.1655703069581137e-02,  4.9400938449466317e-02,  4.6955051303948434e-02,
//  4.4327504338803274e-02,  4.1528463090147696e-02,  3.8568756612587678e-02,
//  3.5459835615146151e-02,  3.2213728223578014e-02,  2.8842993580535197e-02,
//  2.5360673570012392e-02,  2.1780243170124794e-02,  1.8115560713489392e-02,
//  1.4380822761485574e-02,  1.0590548383650969e-02,  6.7597991957454012e-03,
//  2.9086225531551411e-03,
// // nroots = 26
//  5.9810365745291860e-02,  5.9596260171248160e-02,  5.9168815466042968e-02,
//  5.8529561771813871e-02,  5.7680787452526826e-02,  5.6625530902368597e-02,
//  5.5367569669302653e-02,  5.3911406932757262e-02,  5.2262255383906990e-02,
//  5.0426018566342379e-02,  4.8409269744074897e-02,  4.6219228372784790e-02,
//  4.3863734259000406e-02,  4.1351219500560268e-02,  3.8690678310423977e-02,
//  3.5891634835097233e-02,  3.2964109089718800e-02,  2.9918581147143946e-02,
//  2.6765953746504013e-02,  2.3517513553984463e-02,  2.0184891507980793e-02,
//  1.6780023396300737e-02,  1.3315114982340961e-02,  9.8026345794627514e-03,
//  6.2555239629732773e-03,  2.6913169500471113e-03,
// // nroots = 27
//  5.7617536707147025e-02,  5.7426137054112113e-02,  5.7043973558794599e-02,
//  5.6472315730625965e-02,  5.5713062560589985e-02,  5.4768736213057986e-02,
//  5.3642473647553611e-02,  5.2338016198298747e-02,  5.0859697146188147e-02,
//  4.9212427324528886e-02,  4.7401678806444990e-02,  4.5433466728276715e-02,
//  4.3314329309597013e-02,  4.1051306136644976e-02,  3.8651914782102517e-02,
//  3.6124125840383554e-02,  3.3476336464372647e-02,  3.0717342497870677e-02,
//  2.7856309310595871e-02,  2.4902741467208774e-02,  2.1866451422853084e-02,
//  1.8757527621469379e-02,  1.5586303035924131e-02,  1.2363328128847644e-02,
//  9.0993694555093971e-03,  5.8056110152399851e-03,  2.4974818357615860e-03,
// // nroots = 28
//  5.5579746306514397e-02,  5.5407952503245123e-02,  5.5064895901762424e-02,
//  5.4551636870889424e-02,  5.3869761865714488e-02,  5.3021378524010766e-02,
//  5.2009109151741402e-02,  5.0836082617798484e-02,  4.9505924683047577e-02,
//  4.8022746793600260e-02,  4.6391133373001894e-02,  4.4616127652692281e-02,
//  4.2703216084667088e-02,  4.0658311384744517e-02,  3.8487734259247661e-02,
//  3.6198193872315189e-02,  3.3796767115611762e-02,  3.1290876747310445e-02,
//  2.8688268473822741e-02,  2.5996987058391954e-02,  2.3225351562565315e-02,
//  2.0381929882402571e-02,  1.7475512911400946e-02,  1.4515089278021472e-02,
//  1.1509824340383383e-02,  8.4690631633078869e-03,  5.4025222460153382e-03,
//  2.3238553757732156e-03,
// // nroots = 29
//  5.3681119863334847e-02,  5.3526343304058255e-02,  5.3217236446579011e-02,
//  5.2754690526370836e-02,  5.2140039183669822e-02,  5.1375054618285725e-02,
//  5.0461942479953129e-02,  4.9403335508962393e-02,  4.8202285945417749e-02,
//  4.6862256729026344e-02,  4.5387111514819806e-02,  4.3781103533640252e-02,
//  4.2048863329582124e-02,  4.0195385409867800e-02,  3.8226013845858435e-02,
//  3.6146426867087272e-02,  3.3962620493416008e-02,  3.1680891253809330e-02,
//  2.9307818044160491e-02,  2.6850243181981870e-02,  2.4315252724963952e-02,
//  2.1710156140146236e-02,  1.9042465461893407e-02,  1.6319874234970964e-02,
//  1.3550237112988812e-02,  1.0741553532878773e-02,  7.9019738499986752e-03,
//  5.0399816126502428e-03,  2.1677232496274501e-03,
// // nroots = 30
//  5.1907877631220636e-02,  5.1767943174910187e-02,  5.1488451500980935e-02,
//  5.1070156069855627e-02,  5.0514184532509374e-02,  4.9822035690550180e-02,
//  4.8995575455756835e-02,  4.8037031819971182e-02,  4.6948988848912201e-02,
//  4.5734379716114486e-02,  4.4396478795787113e-02,  4.2938892835935639e-02,
//  4.1365551235584753e-02,  3.9680695452380801e-02,  3.7888867569243444e-02,
//  3.5994898051084502e-02,  3.4003892724946423e-02,  3.1921219019296329e-02,
//  2.9752491500788944e-02,  2.7503556749924791e-02,  2.5180477621521247e-02,
//  2.2789516943997820e-02,  2.0337120729457286e-02,  1.7829901014207720e-02,
//  1.5274618596784799e-02,  1.2678166476815959e-02,  1.0047557182287984e-02,
//  7.3899311633454558e-03,  4.7127299269535683e-03,  2.0268119688737585e-03,
// // nroots = 31
//  5.0248000375256278e-02,  5.0121069569043289e-02,  4.9867528594952394e-02,
//  4.9488017919699291e-02,  4.8983496220517835e-02,  4.8355237963477675e-02,
//  4.7604830184101235e-02,  4.6734168478415522e-02,  4.5745452214570180e-02,
//  4.4641178977124413e-02,  4.3424138258047418e-02,  4.2097404410385099e-02,
//  4.0664328882417444e-02,  3.9128531751963083e-02,  3.7493892582280031e-02,
//  3.5764540622768140e-02,  3.3944844379410546e-02,  3.2039400581624682e-02,
//  3.0053022573989872e-02,  2.7990728163314639e-02,  2.5857726954024697e-02,
//  2.3659407208682794e-02,  2.1401322277669967e-02,  1.9089176658573199e-02,
//  1.6728811790177316e-02,  1.4326191823806518e-02,  1.1887390117010501e-02,
//  9.4185794284203875e-03,  6.9260419018309606e-03,  4.4163334569309052e-03,
//  1.8992056795136905e-03,
};

__device__ constexpr double POLY_SMALLX_W1[] = {
// // nroots = 1
// -3.3333333333333331e-01,
// // nroots = 2
// -1.2271362192859778e-01, -2.1061971140473557e-01,
// // nroots = 3
// -5.6487691723447885e-02, -1.4907718645889767e-01, -1.2776845515098778e-01,
// // nroots = 4
// -3.1384430571429409e-02, -8.9804624256712817e-02, -1.2931437096375242e-01,
// -8.2829907541438680e-02,
// // nroots = 5
// -1.9686757690986864e-02, -5.6173759018728280e-02, -9.7115272681211257e-02,
// -1.0297926219357020e-01, -5.7378281748836732e-02,
// nroots = 6
-1.3404459326117429e-02, -3.7140259226780728e-02, -6.9798025993402457e-02,
-8.9903208869919593e-02, -8.1202949733650345e-02, -4.1884430183462780e-02,
// nroots = 7
-9.6762784934135981e-03, -2.5810077192692869e-02, -5.0559277860857933e-02,
-7.1997207281479375e-02, -7.8739057440032886e-02, -6.4711830138776669e-02,
-3.1839604926079998e-02,
// nroots = 8
-7.2956931243810877e-03, -1.8697575943681034e-02, -3.7385544074891822e-02,
-5.6452682904581976e-02, -6.8429140245654982e-02, -6.7705342645285799e-02,
-5.2380981359025407e-02, -2.4986373035831237e-02,
// nroots = 9
-5.6884471222090364e-03, -1.4017609368068548e-02, -2.8279396473125228e-02,
-4.4297481709585342e-02, -5.7192383961753759e-02, -6.2644131890598725e-02,
-5.8019794346925377e-02, -4.3080183147849817e-02, -2.0113905313217502e-02,
// nroots = 10
-4.5548069078836916e-03, -1.0812068870036251e-02, -2.1858322694621932e-02,
-3.5065901484532154e-02, -4.7201253922888042e-02, -5.5107972224754838e-02,
-5.6377251364257981e-02, -4.9866349375738916e-02, -3.5958202071776788e-02,
-1.6531204416842745e-02,
// nroots = 11
-3.7265960577018311e-03, -8.5403678824716809e-03, -1.7229332137015666e-02,
-2.8080687367955298e-02, -3.8907666134333468e-02, -4.7433694841593890e-02,
-5.1693920888210537e-02, -5.0384549968286702e-02, -4.3099530033836778e-02,
-3.0414471142145506e-02, -1.3822516879781982e-02,
// // nroots = 12
// -3.1038096899801901e-03, -6.8830915722212487e-03, -1.3819746842434521e-02,
// -2.2762002213180321e-02, -3.2198834723663874e-02, -4.0484183390368120e-02,
// -4.6081931636853396e-02, -4.7795785285076720e-02, -4.4950377862156901e-02,
// -3.7497135400073503e-02, -2.6030178540522940e-02, -1.1726256176801588e-02,
// // nroots = 13
// -2.6240792114390053e-03, -5.6436186987320449e-03, -1.1257772310878891e-02,
// -1.8670533124689720e-02, -2.6815751926887902e-02, -3.4492520092913835e-02,
// -4.0518024622316566e-02, -4.3878709377426037e-02, -4.3860783492389178e-02,
// -4.0143708158048838e-02, -3.2844993055811733e-02, -2.2511371641957784e-02,
// -1.0071467619841788e-02,
// // nroots = 14
// -2.2469308790401127e-03, -4.6964849046452917e-03, -9.2974560817277799e-03,
// -1.5486275275472907e-02, -2.2495801468911308e-02, -2.9439624856328239e-02,
// -3.5409663026430928e-02, -3.9576455854167823e-02, -4.1281268726971909e-02,
// -4.0109999958463663e-02, -3.5940867319080382e-02, -2.8960749795930670e-02,
// -1.9649015970703121e-02, -8.7427392154592037e-03,
// // nroots = 15
// -1.9452005169610048e-03, -3.9590659703587971e-03, -7.7727242996177151e-03,
// -1.2978556297161697e-02, -1.9014501003127515e-02, -2.5218029951309142e-02,
// -3.0889870150948288e-02, -3.5361429299482924e-02, -3.8059523861408914e-02,
// -3.8562264536316726e-02, -3.6640791404117634e-02, -3.2282899099728132e-02,
// -2.5696361141300823e-02, -1.7292174284832689e-02, -7.6599415166613213e-03,
// // nroots = 16
// -1.7001230829367258e-03, -3.3754187760707522e-03, -6.5691417015674332e-03,
// -1.0980813193163734e-02, -1.6191752239187309e-02, -2.1700508243780385e-02,
// -2.6965355395781234e-02, -3.1450294276355116e-02, -3.4670712171327708e-02,
// -3.6234880948403915e-02, -3.5877818286314068e-02, -3.3484676556934885e-02,
// -2.9101705514392662e-02, -2.2933920020103322e-02, -1.5330145136012663e-02,
// -6.7660677910014247e-03,
// // nroots = 17
// -1.4984074950259089e-03, -2.9067246676076157e-03, -5.6063199913378228e-03,
// -9.3719000074020762e-03, -1.3886833612390828e-02, -1.8766944700796127e-02,
// -2.3589413509197684e-02, -2.7924639812563028e-02, -3.1368700683786291e-02,
// -3.3573990726416987e-02, -3.4275766919362793e-02, -3.3312623741992758e-02,
// -3.0639375470369250e-02, -2.6331392475133136e-02, -2.0580114466852976e-02,
// -1.3680500642828962e-02, -6.0196844102690869e-03,
// // nroots = 18
// -1.3304316837717016e-03, -2.5254539216072332e-03, -4.8267625926033710e-03,
// -8.0628400015049003e-03, -1.1990899100116491e-02, -1.6313190281052339e-02,
// -2.0697019672680061e-02, -2.4797149597584039e-02, -2.8279093434533591e-02,
// -3.0841757376119491e-02, -3.2237924483929564e-02, -3.2291219224453237e-02,
// -3.0908424053730399e-02, -2.8086328935576100e-02, -2.3912663421741687e-02,
// -1.8561091188511476e-02, -1.2280982655562224e-02, -5.3901017082554287e-03,
// // nroots = 19
// -1.1890941070327255e-03, -2.2116988826134500e-03, -4.1886553631745567e-03,
// -6.9875756372839480e-03, -1.0419927528137743e-02, -1.4252420410437240e-02,
// -1.8221106397652641e-02, -2.2047354808442856e-02, -2.5454745823222515e-02,
// -2.8185874148949006e-02, -3.0018058614902164e-02, -3.0777018638139111e-02,
// -3.0347699599460185e-02, -2.8681599315174507e-02, -2.5800157550483593e-02,
// -2.1794010982877157e-02, -1.6818196700600894e-02, -1.1083936470966001e-02,
// -4.8542023537830386e-03,
// // nroots = 20
// -1.0690629147509234e-03, -1.9508097838309760e-03, -3.6611187853273588e-03,
// -6.0965216267657952e-03, -9.1089122140064586e-03, -1.2513632207604274e-02,
// -1.6099559879687413e-02, -1.9640657574944317e-02, -2.2908354254861273e-02,
// -2.5684094401597250e-02, -2.7771375416823764e-02, -2.9006623070525431e-02,
// -2.9268317072484000e-02, -2.8483873130656211e-02, -2.6633909001728261e-02,
// -2.3753664147307559e-02, -1.9931501267395593e-02, -1.5304606185569621e-02,
// -1.0052431646823436e-02, -4.3943087506434211e-03,
// // nroots = 21
// -9.6627314278892426e-04, -1.7318347083541976e-03, -3.2210239526491015e-03,
// -5.3520511073680780e-03, -8.0073246286096484e-03, -1.1039282585195927e-02,
// -1.4277715337011516e-02, -1.7538220345659664e-02, -2.0631374387745500e-02,
// -2.3372173185105094e-02, -2.5589275254414505e-02, -2.7133596260340120e-02,
// -2.7885831872629167e-02, -2.7762539538660241e-02, -2.6720480163454536e-02,
// -2.4759006126101473e-02, -2.1920378758193571e-02, -1.8288004573812425e-02,
// -1.3982709537162180e-02, -9.1575193277493756e-03, -3.9967185403280816e-03,
// // nroots = 22
// -8.7758269425313210e-04, -1.5464683528524546e-03, -2.8508202714467739e-03,
// -4.7253106993737966e-03, -7.0756580127189356e-03, -9.7828924188553788e-03,
// -1.2708741997005996e-02, -1.5701898033920712e-02, -1.8604879236247839e-02,
// -2.1261187557625936e-02, -2.3522435269239354e-02, -2.5255124114469417e-02,
// -2.6346772869184864e-02, -2.6711118691921380e-02, -2.6292159006198620e-02,
// -2.5066852499734976e-02, -2.3046357966386773e-02, -2.0275756003799422e-02,
// -1.6832270733800399e-02, -1.2822101353378577e-02, -8.3762659163262396e-03,
// -3.6506796345923557e-03,
// // nroots = 23
// -8.0053237561891213e-04, -1.3883300247785086e-03, -2.5370292953011361e-03,
// -4.1939521779308740e-03, -6.2828211065206491e-03, -8.7069202945531735e-03,
// -1.1353106382478750e-02, -1.4096503966598999e-02, -1.6805693484973475e-02,
// -1.9348178723997807e-02, -2.1595909708747425e-02, -2.3430634422247840e-02,
// -2.4748859759267428e-02, -2.5466218075784461e-02, -2.5521059996814338e-02,
// -2.4877125808989646e-02, -2.3525185527977711e-02, -2.1483580167976052e-02,
// -1.8797642603314672e-02, -1.5538026278976966e-02, -1.1798038198100505e-02,
// -7.6903245153657745e-03, -3.3476604370182329e-03,
// // nroots = 24
// -7.3317556916507529e-04, -1.2524590747887223e-03, -2.2691845462950136e-03,
// -3.7405007205857576e-03, -5.6041788910352087e-03, -7.7809841253016748e-03,
// -1.0177696039521220e-02, -1.2690665256319447e-02, -1.5209771470394179e-02,
// -1.7622633889750192e-02, -1.9818915283735725e-02, -2.1694557310112852e-02,
// -2.3155787346856936e-02, -2.4122745624809844e-02, -2.4532595723585893e-02,
// -2.4342000921887333e-02, -2.3528872763375518e-02, -2.2093325643166399e-02,
// -2.0057801314458116e-02, -1.7466359276473199e-02, -1.4383164083589122e-02,
// -1.0890252413042244e-02, -7.0848839825290218e-03, -3.0808220625546364e-03,
// // nroots = 25
// -6.7395540337246787e-04, -1.1349566358644543e-03, -2.0390746801447687e-03,
// -3.3511690623813806e-03, -5.0200781398304032e-03, -6.9804175588084787e-03,
// -9.1548797431910186e-03, -1.1456954442290054e-02, -1.3793975716853965e-02,
// -1.6070389378533476e-02, -1.8191127216247032e-02, -2.0064970609393468e-02,
// -2.1607786472664380e-02, -2.2745522888648222e-02, -2.3416860109892888e-02,
// -2.3575424563802901e-02, -2.3191488659954042e-02, -2.2253097062672412e-02,
// -2.0766580060411256e-02, -1.8756436145074561e-02, -1.6264588577291961e-02,
// -1.3349045851497947e-02, -1.0082036571136040e-02, -6.5478866197224098e-03,
// -2.8446311636533511e-03,
// // nroots = 26
// -6.2161488689990480e-04, -1.0327275086083386e-03, -1.8401960580889394e-03,
// -3.0149869640499873e-03, -4.5147339695371389e-03, -6.2851163121741835e-03,
// -8.2616265380855095e-03, -1.0371671052150202e-02, -1.2536935793770810e-02,
// -1.4675940887304666e-02, -1.6706702024265049e-02, -1.8549412886245953e-02,
// -2.0129062224194316e-02, -2.1377901293589997e-02, -2.2237682139585283e-02,
// -2.2661594577637559e-02, -2.2615839388568829e-02, -2.2080786934452167e-02,
// -2.1051683736156294e-02, -1.9538884132735745e-02, -1.7567599591891560e-02,
// -1.5177174446041301e-02, -1.2419915194091842e-02, -9.3595332664645377e-03,
// -6.0694393571820810e-03, -2.6345721695611437e-03,
// // nroots = 27
// -5.7513028408902322e-04, -9.4329168430796887e-04, -1.6673519036875177e-03,
// -2.7231558362285969e-03, -4.0753849099907985e-03, -5.6786233722776929e-03,
// -7.4787299505662741e-03, -9.4144739152637359e-03, -1.1419386669380317e-02,
// -1.3423773547435855e-02, -1.5356825713614353e-02, -1.7148769050359263e-02,
// -1.8732985812784094e-02, -2.0048045624828675e-02, -2.1039585086268936e-02,
// -2.1661979765378692e-02, -2.1879758536315162e-02, -2.1668717899778190e-02,
// -2.1016702873908635e-02, -1.9924031000705781e-02, -1.8403546708975267e-02,
// -1.6480304475441670e-02, -1.4190890952391386e-02, -1.1582409919015752e-02,
// -8.7111810553797079e-03, -5.6413659566756039e-03, -2.4469308282843898e-03,
// // nroots = 28
// -5.3366111684094713e-04, -8.6464500025246356e-04, -1.5163554162466518e-03,
// -2.4685657231938683e-03, -3.6916481016212623e-03, -5.1474059282214536e-03,
// -6.7901472727191041e-03, -8.5679696755271186e-03, -1.0424220488828342e-02,
// -1.2299092180139715e-02, -1.4131308241160878e-02, -1.5859852820091818e-02,
// -1.7425695972749667e-02, -1.8773466540719552e-02, -1.9853026110371076e-02,
// -2.0620900244837929e-02, -2.1041527136180304e-02, -2.1088288887562652e-02,
// -2.0744296665855217e-02, -2.0002907798798691e-02, -1.8867960345377299e-02,
// -1.7353718559221982e-02, -1.5484530854094966e-02, -1.3294210470928623e-02,
// -1.0825159460360188e-02, -8.1272796169722730e-03, -5.2568631355084626e-03,
// -2.2786295689508269e-03,
// // nroots = 29
// -4.9651222051138092e-04, -7.9515492910924588e-04, -1.3838075161188327e-03,
// -2.2454304965243265e-03, -3.3550242159053603e-03, -4.6802840672847696e-03,
// -6.1824474473191234e-03, -7.8173104864695114e-03, -9.5363881834857386e-03,
// -1.1288187853302170e-02, -1.3019562855678271e-02, -1.4677111485834683e-02,
// -1.6208584731990053e-02, -1.7564266368590393e-02, -1.8698289564294306e-02,
// -1.9569855822093415e-02, -2.0144324592970581e-02, -2.0394145249041540e-02,
// -2.0299607180963412e-02, -1.9849388492826435e-02, -1.9040888986250282e-02,
// -1.7880338725651895e-02, -1.6382679334875805e-02, -1.4571221214845644e-02,
// -1.2477086244340073e-02, -1.0138453615874508e-02, -7.5996463863333523e-03,
// -4.9102340771396448e-03, -2.1271009877085771e-03,
// // nroots = 30
// -4.6310464738128133e-04, -7.3348180776671226e-04, -1.2669287870492598e-03,
// -2.0490099239445147e-03, -3.0585149395456822e-03, -4.2679787427113616e-03,
// -5.6443547331045977e-03, -7.1498252733619401e-03, -8.7427296744303148e-03,
// -1.0378587186787830e-02, -1.2011190184133108e-02, -1.3593741021053611e-02,
// -1.5080004983478243e-02, -1.6425451356138845e-02, -1.7588354914387684e-02,
// -1.8530831101716622e-02, -1.9219779756140722e-02, -1.9627714459533419e-02,
// -1.9733457350653339e-02, -1.9522682498344823e-02, -1.8988294598248755e-02,
// -1.8130633747778603e-02, -1.6957501279801657e-02, -1.5484006012953288e-02,
// -1.3732234769856470e-02, -1.1730755802916937e-02, -9.5139701834677914e-03,
// -7.1213437578314283e-03, -4.5966801393834151e-03, -1.9901896994310832e-03,
// // nroots = 31
// -4.3295313883927794e-04, -6.7851870107199454e-04, -1.1634312017740312e-03,
// -1.8753961641719409e-03, -2.7963255554749196e-03, -3.9027531947284874e-03,
// -5.1663738309140816e-03, -6.5546936397432127e-03, -8.0317773547678734e-03,
// -9.5590750512080276e-03, -1.1096309789162002e-02, -1.2602405937747242e-02,
// -1.4036437074665549e-02, -1.5358571907751601e-02, -1.6530996706426423e-02,
// -1.7518793260717383e-02, -1.8290752391624653e-02, -1.8820104496316398e-02,
// -1.9085150491865859e-02, -1.9069778779481357e-02, -1.8763856436510597e-02,
// -1.8163485698059839e-02, -1.7271119851178813e-02, -1.6095535868708110e-02,
// -1.4651664402953265e-02, -1.2960281132221278e-02, -1.1047567099186447e-02,
// -8.9445508736011696e-03, -6.6864610473804766e-03, -4.3121367372060491e-03,
// -1.8660755178749769e-03,
};

__device__ constexpr double POLY_LARGEX_RT[] = {
// // nroots = 1
//  5.0000000000000000e-01,
// // nroots = 2
//  2.7525512860841095e-01,  2.7247448713915889e+00,
// // nroots = 3
//  1.9016350919348812e-01,  1.7844927485432516e+00,  5.5253437422632601e+00,
// // nroots = 4
//  1.4530352150331710e-01,  1.3390972881263614e+00,  3.9269635013582871e+00,
//  8.5886356890120350e+00,
// // nroots = 5
//  1.1758132021177814e-01,  1.0745620124369040e+00,  3.0859374437175502e+00,
//  6.4147297336620301e+00,  1.1807189489971737e+01,
// nroots = 6
 9.8747014068481187e-02,  8.9830283456961768e-01,  2.5525898026681713e+00,
 5.1961525300544658e+00,  9.1242480375311796e+00,  1.5129959781108086e+01,
// nroots = 7
 8.5115442997594035e-02,  7.7213792004277704e-01,  2.1805918884504591e+00,
 4.3897928867310139e+00,  7.5540913261017844e+00,  1.1989993039823879e+01,
 1.8528277495852493e+01,
// nroots = 8
 7.4791882596818265e-02,  6.7724908764928915e-01,  1.9051136350314284e+00,
 3.8094763614849070e+00,  6.4831454286271706e+00,  1.0093323675221344e+01,
 1.4972627088426393e+01,  2.1984272840962650e+01,
// nroots = 9
 6.6702230958194400e-02,  6.0323635708174872e-01,  1.6923950797931788e+00,
 3.3691762702432690e+00,  5.6944233429577551e+00,  8.7697567302686021e+00,
 1.2771825354869193e+01,  1.8046505467728981e+01,  2.5485979166099078e+01,
// nroots = 10
 6.0192063149587915e-02,  5.4386750029464603e-01,  1.5229441054044437e+00,
 3.0225133764515739e+00,  5.0849077500985240e+00,  7.7774392315254453e+00,
 1.1208130204348663e+01,  1.5561163332189350e+01,  2.1193892096301543e+01,
 2.9024950340236227e+01,
// nroots = 11
 5.4839869578818493e-02,  4.9517412335035643e-01,  1.3846557400845998e+00,
 2.7419199401067025e+00,  4.5977377004857116e+00,  6.9993974695288363e+00,
 1.0018908275957234e+01,  1.3769305866101691e+01,  1.8441119680978193e+01,
 2.4401961242387042e+01,  3.2594980091440817e+01,
// // nroots = 12
//  5.0361889117293952e-02,  4.5450668156378027e-01,  1.2695899401039614e+00,
//  2.5098480972321280e+00,  4.1984156448784136e+00,  6.3699753880306353e+00,
//  9.0754342309612035e+00,  1.2390447963809471e+01,  1.6432195087675314e+01,
//  2.1396755936166109e+01,  2.7661108779846089e+01,  3.6191360360615604e+01,
// // nroots = 13
//  4.6560083245024773e-02,  4.2002740640121355e-01,  1.1723107732777798e+00,
//  2.3145408643494343e+00,  3.8645850382281592e+00,  5.8487348113063433e+00,
//  8.3045534899859010e+00,  1.1285750993517638e+01,  1.4870960377525401e+01,
//  1.9180919485610456e+01,  2.4416692333056517e+01,  3.0963938274746795e+01,
//  3.9810426068749337e+01,
// // nroots = 14
//  4.3292035739773548e-02,  3.9042092604203149e-01,  1.0889658675692704e+00,
//  2.1477994705822314e+00,  3.5810282499917712e+00,  5.4091123306164599e+00,
//  7.6606911156100850e+00,  1.0375563009770053e+01,  1.3609711429390236e+01,
//  1.7444294475704190e+01,  2.2003196766914922e+01,  2.7492041504843851e+01,
//  3.4304620509373080e+01,  4.3449262307852045e+01,
// // nroots = 15
//  4.0452704304575260e-02,  3.6472064505140778e-01,  1.0167460688574956e+00,
//  2.0037189531339226e+00,  3.3369832057345099e+00,  5.0328052776251155e+00,
//  7.1135937697298752e+00,  9.6098172843044445e+00,  1.2563082369948498e+01,
//  1.6031284108073976e+01,  2.0097785334755926e+01,  2.4889312475156551e+01,
//  3.0615717400899491e+01,  3.7678471784205300e+01,  4.7105508618218913e+01,
// // nroots = 16
//  3.7962914575313457e-02,  3.4220015601094766e-01,  9.5355315539086549e-01,
//  1.8779315076960743e+00,  3.1246010507021444e+00,  4.7067267076675874e+00,
//  6.6422151797414442e+00,  8.9550013377233899e+00,  1.1677033673975957e+01,
//  1.4851431341801250e+01,  1.8537743178606693e+01,  2.2821300693525210e+01,
//  2.7831438211328678e+01,  3.3781970488226165e+01,  4.1081666525491201e+01,
//  5.0777223877537082e+01,
// // nroots = 17
//  3.5761858556337386e-02,  3.2230289701540760e-01,  8.9778743824424956e-01,
//  1.7671330095048279e+00,  2.9380104369247211e+00,  4.4212366485835117e+00,
//  6.2313736025080120e+00,  8.3876207781715131e+00,  1.0915150152476127e+01,
//  1.3847145110793951e+01,  1.7228024947684798e+01,  2.1118801755252182e+01,
//  2.5606595795917325e+01,  3.0823164238528481e+01,  3.6986065260934993e+01,
//  4.4511035627908562e+01,  5.4462790440994993e+01,
// // nroots = 18
//  3.3802060596144767e-02,  3.0459519206802305e-01,  8.4820747882451009e-01,
//  1.6687755533298347e+00,  2.7727245286391229e+00,  4.1690582475017761e+00,
//  5.8697952945278802e+00,  7.8906059174609409e+00,  1.0251740616401369e+01,
//  1.2979403028335362e+01,  1.6107833621211359e+01,  1.9682594096569808e+01,
//  2.3766014733151867e+01,  2.8446863416187917e+01,  3.3859169865578401e+01,
//  4.0224050469543094e+01,  4.7963921373889526e+01,  5.8160844506183068e+01,
// // nroots = 19
//  3.2045913128252994e-02,  2.8873407234686432e-01,  8.0383479939549507e-01,
//  1.5808614575096895e+00,  2.6252513972914890e+00,  3.9445843839317147e+00,
//  5.5489066368145510e+00,  7.4511963747374166e+00,  9.6680282675023470e+00,
//  1.2220529929386148e+01,  1.5135786084744241e+01,  1.8448961406463173e+01,
//  2.2206639606535553e+01,  2.6472355727146923e+01,  3.1336411796150887e+01,
//  3.6934985280054455e+01,  4.3492591618441629e+01,  5.1438070769382129e+01,
//  6.1870224479037041e+01,
// // nroots = 20
//  3.0463239279482524e-02,  2.7444471579285035e-01,  7.6388755844391321e-01,
//  1.5018014976681044e+00,  2.4928301451213657e+00,  3.7434180412162936e+00,
//  5.2620558537883513e+00,  7.0596277357415609e+00,  9.1498983120306487e+00,
//  1.1550198286442804e+01,  1.4282403685210403e+01,  1.7374366975199077e+01,
//  2.0862075185437845e+01,  2.4793039892463458e+01,  2.9231910157093427e+01,
//  3.4270428925039575e+01,  4.0046815790245603e+01,  4.6788846392124967e+01,
//  5.4931555621020550e+01,  6.5589931990639727e+01,
// // nroots = 21
//  2.9029543936387635e-02,  2.6150430708215294e-01,  7.2773338834365031e-01,
//  1.4303150459330356e+00,  2.3732474728319004e+00,  3.5620583926357074e+00,
//  5.0039935628186738e+00,  6.7082806310126752e+00,  8.6864934825800209e+00,
//  1.0953055650413523e+01,  1.3525943011373357e+01,  1.6427682387916022e+01,
//  1.9686806658322944e+01,  2.3340045388239311e+01,  2.7435762818520232e+01,
//  3.2039647947988584e+01,  3.7244806615266050e+01,  4.3191409701011828e+01,
//  5.0110370364086812e+01,  5.8442711638286255e+01,  6.9319101991400871e+01,
// // nroots = 22
//  2.7724736591276774e-02,  2.4973028108823533e-01,  6.9485521795227390e-01,
//  1.3653582776868292e+00,  2.2647072589375217e+00,  3.3976808657520632e+00,
//  4.7705156762734964e+00,  6.3911097478094518e+00,  8.2693001309060623e+00,
//  1.0417240214581929e+01,  1.2849916314252928e+01,  1.5585864757495914e+01,
//  1.8648187517474806e+01,  2.2066029202676830e+01,  2.5876798119301597e+01,
//  3.0129649964964479e+01,  3.4891252115132360e+01,  4.0256006929107102e+01,
//  4.6365957352938530e+01,  5.3455044504540616e+01,  6.1970091334807094e+01,
//  7.3056979479728611e+01,
// // nroots = 23
//  2.6532183876098379e-02,  2.3897161999933406e-01,  6.6482608325629022e-01,
//  1.3060716158039978e+00,  2.1657359795353486e+00,  3.2479796092961242e+00,
//  4.5582116475947760e+00,  6.1032492614598546e+00,  7.8915323621309739e+00,
//  9.9334115718826261e+00,  1.2241535951273148e+01,  1.4831380588625729e+01,
//  1.7721976213997483e+01,  2.0936940207605186e+01,  2.4505973901846374e+01,
//  2.8467112454527676e+01,  3.2870252361043640e+01,  3.7782987405363052e+01,
//  4.3300959201161334e+01,  4.9568012842125619e+01,  5.6821018665012517e+01,
//  6.5512427112270117e+01,  7.6802901160312700e+01,
// // nroots = 24
//  2.5437996585689359e-02,  2.2910231649262433e-01,  6.3729027873266875e-01,
//  1.2517406323627465e+00,  2.0751129098523808e+00,  3.1110524551477132e+00,
//  4.3642830769353065e+00,  5.8407332713236082e+00,  7.5477046800234540e+00,
//  9.4940953300264876e+00,  1.1690695926056073e+01,  1.4150586187285759e+01,
//  1.6889671928527108e+01,  1.9927425875242463e+01,  2.3287932824879917e+01,
//  2.7001406056472355e+01,  3.1106464709046566e+01,  3.5653703516328214e+01,
//  4.0711598185543110e+01,  4.6376979557540132e+01,  5.2795432527283630e+01,
//  6.0206666963057224e+01,  6.9068601975304375e+01,  8.0556280819950402e+01,
// // nroots = 25
//  2.4430486164134554e-02,  2.2001639865187669e-01,  6.1194905886035600e-01,
//  1.2017665377409916e+00,  1.9918178052911781e+00,  2.9853154656388092e+00,
//  4.1864105010442785e+00,  5.6002933990827337e+00,  7.2333279637322212e+00,
//  9.0932267983089190e+00,  1.1189281321712450e+01,  1.3532664930275971e+01,
//  1.6136836705389790e+01,  1.9018086906205195e+01,  2.2196288008884540e+01,
//  2.5695953089717140e+01,  2.9547770386068311e+01,  3.3790907096465993e+01,
//  3.8476619956375998e+01,  4.3674228042342541e+01,  4.9481707240111525e+01,
//  5.6046326151559533e+01,  6.3610552160222085e+01,  7.2637626045451725e+01,
//  8.4316597544701708e+01,
// // nroots = 26
//  2.3499745451748166e-02,  2.1162409772850768e-01,  5.8854965565640838e-01,
//  1.1556436128826397e+00,  1.9149911321201440e+00,  2.8694384848332137e+00,
//  4.0226539114050963e+00,  5.3792094651444282e+00,  6.9446884907059312e+00,
//  8.7258252848297229e+00,  1.0730686164960115e+01,  1.2968905056512702e+01,
//  1.5451992498719477e+01,  1.8193745832982035e+01,  2.1210802311794055e+01,
//  2.4523399621789363e+01,  2.8156446757738671e+01,  3.2141075953841757e+01,
//  3.6516971983705098e+01,  4.1336022358465094e+01,  4.6668355740523516e+01,
//  5.2613053664164717e+01,  5.9319017574105793e+01,  6.7031396926394294e+01,
//  7.6218617538242384e+01,  8.8083386135303101e+01,
// // nroots = 27
//  2.2637321764490403e-02,  2.0384886358910115e-01,  5.6687674698997592e-01,
//  1.1129417449108705e+00,  1.8439034531225937e+00,  2.7622958634819486e+00,
//  3.8713773423959186e+00,  5.1751974796436677e+00,  6.6786842873405901e+00,
//  8.3877565918984587e+00,  1.0309468348865641e+01,  1.2452194292401609e+01,
//  1.4825870237972618e+01,  1.7442307191222060e+01,  2.0315607360293736e+01,
//  2.3462724279507746e+01,  2.6904232239340534e+01,  3.0665409061778991e+01,
//  3.4777804747837429e+01,  3.9281595476659632e+01,  4.4229272334197169e+01,
//  4.9691743673383556e+01,  5.5769161249665579e+01,  6.2612012913671613e+01,
//  7.0468060440696945e+01,  7.9810787215031667e+01,  9.1856229242335857e+01,
// // nroots = 28
//  2.1835959421664289e-02,  1.9662501675605398e-01,  5.4674575955457738e-01,
//  1.0732927646925488e+00,  1.7779315886935154e+00,  2.6629283184247892e+00,
//  3.7311909350139651e+00,  4.9863243745575856e+00,  6.4327019219178299e+00,
//  8.0755565686670163e+00,  9.9210973194213103e+00,  1.1976657318097082e+01,
//  1.4250883359461472e+01,  1.6753980285337462e+01,  1.9498029648036461e+01,
//  2.2497411050074689e+01,  2.5769368816152561e+01,  2.9334789869091171e+01,
//  3.3219297919270076e+01,  3.7454838268460072e+01,  4.2082055800206739e+01,
//  4.7154021248777767e+01,  5.2742395970002200e+01,  5.8948369842919362e+01,
//  6.5923974474211676e+01,  7.3919519173353009e+01,  8.3413425568839060e+01,
//  9.5634750860588284e+01,
// // nroots = 29
//  2.1089395098205156e-02,  1.8989588398975638e-01,  5.2799756150380650e-01,
//  1.0363796519133510e+00,  1.7165398584196183e+00,  2.5705130786025099e+00,
//  3.6009058856172511e+00,  4.8109422295121211e+00,  6.2045223787503812e+00,
//  7.7862978584545157e+00,  9.5617661276720227e+00,  1.1537390089408222e+01,
//  1.3720749420799105e+01,  1.6120733421037702e+01,  1.8747789038878786e+01,
//  2.1614243675418422e+01,  2.4734731466985338e+01,  2.8126766135082082e+01,
//  3.1811526931229533e+01,  3.5814963828855454e+01,  4.0169397995140628e+01,
//  4.4915923137908337e+01,  5.0108168407561145e+01,  5.5818524151111106e+01,
//  6.2149189096788938e+01,  6.9253699227995114e+01,  7.7384850976179521e+01,
//  8.7025892182318486e+01,  9.9418610907768539e+01,
// // nroots = 30
//  2.0392193775236527e-02,  1.8361230503708192e-01,  5.1049421913596571e-01,
//  1.0019279274528394e+00,  1.6592651780060930e+00,  2.4843402777905514e+00,
//  3.4794990281427913e+00,  4.6476369270260962e+00,  5.9922482023656096e+00,
//  7.5174877929290096e+00,  9.2282491217658844e+00,  1.1130261490352575e+01,
//  1.3230212276078705e+01,  1.5535901019228723e+01,  1.8056435214799702e+01,
//  2.0802481620579336e+01,  2.3786592878196362e+01,  2.7023638435386893e+01,
//  3.0531383273363225e+01,  3.4331281605561593e+01,  3.8449592717510598e+01,
//  4.2918996674025955e+01,  4.7781018446551954e+01,  5.3089826610037136e+01,
//  5.8918518746195041e+01,  6.5370275574797105e+01,  7.2600100925448842e+01,
//  8.0863221815671636e+01,  9.0647606826965728e+01,  1.0320750067582173e+02,
// // nroots = 31
//  1.9739616193178225e-02,  1.7773142707141706e-01,  4.9411557648940696e-01,
//  9.6969873164499709e-01,  1.6057051140985357e+00,  2.4037941117242698e+00,
//  3.3660847103142895e+00,  4.4951876368162758e+00,  5.7942464369889661e+00,
//  7.2669891295593967e+00,  8.9177926244746359e+00,  1.0751762818395916e+01,
//  1.2774834264847245e+01,  1.4993894676815959e+01,  1.7416941435106203e+01,
//  2.0053280025321786e+01,  2.2913778355123558e+01,  2.6011196940249089e+01,
//  2.9360624220999089e+01,  3.2980060918172178e+01,  3.6891221217477799e+01,
//  4.1120658946990169e+01,  4.5701398131155180e+01,  5.0675379370668551e+01,
//  5.6097293554984454e+01,  6.2040925662658722e+01,  6.8610413634453707e+01,
//  7.5962195116562384e+01,  8.4353874634793740e+01,  9.4278041969742887e+01,
//  1.0700113899010603e+02,
};

__device__ constexpr double POLY_LARGEX_WW[] = {
// // nroots = 1
//  1.0000000000000000e+00,
// // nroots = 2
//  9.0824829046386302e-01,  9.1751709536136983e-02,
// // nroots = 3
//  8.1765693911205850e-01,  1.7723149208382905e-01,  5.1115688041124931e-03,
// // nroots = 4
//  7.4602451535815473e-01,  2.3447981532351803e-01,  1.9270440241576533e-02,
//  2.2522907675073554e-04,
// // nroots = 5
//  6.8928466986403814e-01,  2.7096740596053548e-01,  3.8223161001540572e-02,
//  1.5161418686244353e-03,  8.6213052614365738e-06,
// nroots = 6
 6.4332872302566002e-01,  2.9393409609065996e-01,  5.8233375824728303e-02,
 4.4067613750663976e-03,  9.6743698451812559e-05,  2.9998543352743358e-07,
// nroots = 7
 6.0526925362603901e-01,  3.0816667968502726e-01,  7.7300217648506794e-02,
 8.8578382138948062e-03,  4.0067910752148827e-04,  5.3219826881352609e-06,
 9.7363225154967611e-09,
// nroots = 8
 5.7313704247602426e-01,  3.1667674550189923e-01,  9.4569504708028052e-02,
 1.4533875202369467e-02,  1.0519698531478185e-03,  3.0600064324974545e-05,
 2.6189464325736453e-07,  2.9956294463236794e-10,
// nroots = 9
 5.4556646930857577e-01,  3.2137060778702525e-01,  1.0979326496044525e-01,
 2.1033035503882684e-02,  2.1309695925833040e-03,  1.0359792288232413e-04,
 2.0431047952739623e-06,  1.1810976957673191e-08,  8.8331775387174107e-12,
// nroots = 10
 5.2158612689910977e-01,  3.2347866796799990e-01,  1.2301274412795381e-01,
 2.7995674894202006e-02,  3.6602062621609857e-03,  2.5765255992385888e-04,
 8.8042421804617054e-06,  1.2254980519965896e-07,  4.9641247246303573e-10,
 2.5156013448758539e-13,
// nroots = 11
 5.0048719317386992e-01,  3.2381258682735053e-01,  1.3439262285778006e-01,
 3.5138145761611533e-02,  5.6175220951544319e-03,  5.2456660651192756e-04,
 2.6691954253619027e-05,  6.6397074996280721e-07,  6.7330283189164226e-09,
 1.9682757964692173e-11,  6.9589212957542919e-15,
// // nroots = 12
//  4.8174023109328062e-01,  3.2291902573400016e-01,  1.4413872803435665e-01,
//  4.2252688817935091e-02,  7.9532178583626174e-03,  9.2943743755879136e-04,
//  6.4190011305491828e-05,  2.4353194908851625e-06,  4.5349233469612837e-08,
//  3.4373298559297163e-10,  7.4299483055247976e-13,  1.8780387378083912e-16,
// // nroots = 13
//  4.6494147126015534e-01,  3.2117309122758919e-01,  1.5245906441260604e-01,
//  4.9195331314242363e-02,  1.0604396031364489e-02,  1.4884051527208678e-03,
//  1.3115117388667682e-04,  6.8868272246162541e-06,  1.9973511146629173e-07,
//  2.8485864759760186e-09,  1.6485618886327706e-11,  2.6890952993271460e-14,
//  4.9613885207872613e-18,
// // nroots = 14
//  4.4977725950135311e-01,  3.1883638732261832e-01,  1.5954673202319922e-01,
//  5.5871569535761778e-02,  1.3504919418060288e-02,  2.2086118557151971e-03,
//  2.3765707628035695e-04,  1.6187168114290304e-05,  6.6097288998530188e-07,
//  1.4958725169227277e-08,  1.6653219687764516e-10,  7.4918020703531324e-13,
//  9.3835311390007269e-16,  1.2865094877603708e-19,
// // nroots = 15
//  4.3599994363115452e-01,  3.1609390641804141e-01,  1.6557367343124368e-01,
//  6.2223540367002554e-02,  1.6591495115446591e-02,  3.0894146797321703e-03,
//  3.9302588796965280e-04,  3.3159963261346906e-05,  1.7818177737242388e-06,
//  5.7643503080952891e-08,  1.0356918934379420e-09,  9.1468517426524072e-12,
//  3.2481602599447942e-14,  3.1711218899325956e-17,  3.2816140162356828e-21,
// // nroots = 16
//  4.2341113976095862e-01,  3.1307798751519689e-01,  1.7068961654416151e-01,
//  6.8219695452184106e-02,  1.9806923404641182e-02,  4.1241021026157693e-03,
//  6.0511405163412495e-04,  6.1119606121792604e-05,  4.1192442079068574e-06,
//  1.7762581426211791e-07,  4.6250368241484811e-09,  6.6950024796024144e-11,
//  4.7561297115556171e-13,  1.3510580447340238e-15,  1.0416899183921723e-18,
//  8.2492149780365387e-23,
// // nroots = 17
//  4.1184987333822709e-01,  3.0988419302971959e-01,  1.7502336271724780e-01,
//  7.3846925916088518e-02,  2.3101477893554247e-02,  5.3016484766203907e-03,
//  8.7992993354924756e-04,  1.0365425286733819e-04,  8.4554514967754892e-06,
//  4.6240685286457705e-07,  1.6234818080244531e-08,  3.4486111334905771e-10,
//  4.0733153595416136e-12,  2.3558755812450367e-14,  5.4161094185246469e-17,
//  3.3362887511570735e-20,  2.0466542596109164e-24,
// // nroots = 18
//  4.0118401287804417e-01,  3.0658202679942276e-01,  1.7868499500877333e-01,
//  7.9104739533119445e-02,  2.6433148031204251e-02,  6.6082690768705906e-03,
//  1.2215096671021977e-03,  1.6440051124820763e-04,  1.5793956173446348e-05,
//  1.0556630385602033e-06,  4.7476455547314095e-08,  1.3742166774424460e-09,
//  2.4094891730959752e-11,  2.3480585102103185e-13,  1.1174227957300119e-15,
//  2.1005883869494762e-18,  1.0444732401725871e-21,  5.0180752692698952e-26,
// // nroots = 19
//  3.9130397408272694e-01,  3.0322229252021565e-01,  1.8176831110517649e-01,
//  8.4001039948325432e-02,  2.9767244441382214e-02,  8.0286850035604113e-03,
//  1.6319828251932273e-03,  2.4684151322487875e-04,  2.7333196978369716e-05,
//  2.1703986095318892e-06,  1.2035140659893825e-07,  4.5029695793209629e-09,
//  1.0862939294794203e-10,  1.5883441401039689e-12,  1.2895813049708617e-14,
//  5.0973075787523842e-17,  7.9075044204715010e-20,  3.2031736699482299e-23,
//  1.2172039136849715e-27,
// // nroots = 20
//  3.8211801932398098e-01,  2.9984222352714129e-01,  1.8435315834012161e-01,
//  8.8549110404553627e-02,  3.3075688285138807e-02,  9.5470897636467222e-03,
//  2.1117580338036305e-03,  3.5414585759848034e-04,  4.4423542864951672e-05,
//  4.0977948721629217e-06,  2.7206848431497516e-07,  1.2651794377097727e-08,
//  3.9782370520555256e-10,  8.0752771633903726e-12,  9.9361770583955663e-14,
//  6.7797068864966500e-16,  2.2445504136542276e-18,  2.8972188631031838e-21,
//  9.6409358804016256e-25,  2.9236797477388334e-29,
// // nroots = 21
//  3.7354869772403904e-01,  2.9646910879859129e-01,  1.8650753720919128e-01,
//  9.2765483582315497e-02,  3.6336180231103146e-02,  1.1147849122436932e-02,
//  2.6597718111442863e-03,  4.8905337817380372e-04,  6.8514755458217144e-05,
//  7.2106204226087590e-06,  5.6008898522734312e-07,  3.1408112827615208e-08,
//  1.2364837913810998e-09,  3.2968179518363160e-11,  5.6788001330617536e-13,
//  5.9277568359646953e-15,  3.4256354220559639e-17,  9.5710836993052230e-20,
//  1.0356140658899054e-22,  2.8523956917266094e-26,  6.9596835174689164e-31,
// // nroots = 22
//  3.6553011371946231e-01,  2.9312288834281841e-01,  1.8828943358993128e-01,
//  9.6668454590768463e-02,  3.9531361667655203e-02,  1.2815980436689405e-02,
//  3.2737594536686007e-03,  6.5380594526582214e-04,  1.0110048687004475e-04,
//  1.1961012995742855e-05,  1.0668304325616616e-06,  7.0441602788046541e-08,
//  3.3660916108090524e-09,  1.1313130408204488e-10,  2.5781296319278107e-12,
//  3.7970360820092867e-14,  3.3868542207148304e-16,  1.6693353963053630e-18,
//  3.9630311999855163e-21,  3.6189621414024282e-24,  8.3072697216188933e-28,
//  1.6430501786349221e-32,
// // nroots = 23
//  3.5800580619470224e-01,  2.8981803207491413e-01,  1.8974838445154743e-01,
//  1.0027705660218360e-01,  4.2648028294714431e-02,  1.4537458961986797e-02,
//  3.9505207413261072e-03,  8.5011717981626621e-04,  1.4366505225061130e-04,
//  1.8873197643040382e-05,  1.9035156699551580e-06,  1.4516963726858872e-07,
//  8.2164449617053346e-09,  3.3722125814057582e-10,  9.7482259264857162e-12,
//  1.9122727690869887e-13,  2.4244888308603273e-15,  1.8600707015402171e-17,
//  7.8690901804095408e-20,  1.5972254521067973e-22,  1.2385719396147015e-25,
//  2.3844925442657878e-29,  3.8493292540923028e-34,
// // nroots = 24
//  3.5092708362373221e-01,  2.8656491398635237e-01,  1.9092680112285854e-01,
//  1.0361036709912053e-01,  4.5676424200182683e-02,  1.6299393710703856e-02,
//  4.6861642235208030e-03,  1.0791731692543769e-03,  1.9763609835222678e-04,
//  2.8532184648493629e-05,  3.2127873910852268e-06,  2.7855833791199193e-07,
//  1.8308111492627642e-08,  8.9485743068727498e-10,  3.1767219624927134e-11,
//  7.9516119169429805e-13,  1.3513354549314233e-14,  1.4839987196129436e-16,
//  9.8509302193979142e-19,  3.5977098324746188e-21,  6.2789532895984159e-24,
//  4.1581179428373256e-27,  6.7529122862707464e-31,  8.9543109477517401e-36,
// // nroots = 25
//  3.4425170398488636e-01,  2.8337082649988776e-01,  1.9186108071620300e-01,
//  1.0668704906340193e-01,  4.8609625728486129e-02,  1.8090108309699284e-02,
//  5.4763217938706820e-03,  1.3416561239574158e-03,  2.6434526573379763e-04,
//  4.1569703514690922e-05,  5.1698753178987693e-06,  5.0292197616776470e-07,
//  3.7764519536704563e-08,  2.1541215787780342e-09,  9.1532734246208986e-11,
//  2.8284578722532820e-12,  6.1676573740107623e-14,  9.1333964936011630e-16,
//  8.7363436324031306e-18,  5.0449656143360147e-20,  1.5990188955830168e-22,
//  2.4120891015221532e-25,  1.3712561517848866e-28,  1.8886829319168770e-32,
//  2.0692150011539962e-37,
// // nroots = 26
//  3.3794281831211437e-01,  2.8024073546098432e-01,  1.9258253664230973e-01,
//  1.0952505818221495e-01,  5.1443013966369251e-02,  1.9899155012384467e-02,
//  6.3163306227402025e-03,  1.6377836829106235e-03,  3.4499769531939000e-04,
//  5.8648633425770045e-05,  7.9822676287387412e-06,  8.6158159056191463e-07,
//  7.2919305786010736e-08,  4.7737982856558615e-09,  2.3782159601959589e-10,
//  8.8381931671955866e-12,  2.3909835074532958e-13,  4.5669756896372288e-15,
//  5.9243423891952970e-17,  4.9611413029243299e-19,  2.5046563890060752e-21,
//  6.9230353804790649e-24,  9.0697778108407137e-27,  4.4476138376213146e-30,
//  5.2211960259687506e-34,  4.7522163234420851e-39,
// // nroots = 27
//  3.3196811795916797e-01,  2.7717784627086350e-01,  1.9311817671143119e-01,
//  1.1214146659976469e-01,  5.4173829278283167e-02,  2.1717283483241989e-02,
//  7.2013828893609513e-03,  1.9673577634472727e-03,  4.4065031364698225e-04,
//  8.0447056193944704e-05,  1.1887976024248379e-05,  1.4102595988863506e-06,
//  1.3299289524291626e-07,  9.8546372097326664e-09,  5.6585279982455109e-10,
//  2.4761135152376546e-11,  8.0919962956343983e-13,  1.9265276469394000e-14,
//  3.2395644735553757e-16,  3.6991112272006689e-18,  2.7246881477213788e-20,
//  1.2080980930422961e-22,  2.9251392406309606e-25,  3.3429672492020109e-28,
//  1.4203821086453334e-31,  1.4277608134851950e-35,  1.0851136987196605e-40,
// // nroots = 28
//  3.2629914080686934e-01,  2.7418403121591522e-01,  1.9349135384672128e-01,
//  1.1455236779916420e-01,  5.6800798959136672e-02,  2.3536380515071280e-02,
//  8.1266456989688568e-03,  2.3298181360809985e-03,  5.5219822553578704e-04,
//  1.0764284892273721e-04,  1.7152583673214982e-05,  2.2181151846596210e-06,
//  2.3080391657036210e-07,  1.9130906282643374e-08,  1.2482138218979068e-09,
//  6.3205006410821946e-11,  2.4420298304472757e-12,  7.0528726336758567e-14,
//  1.4847846385026617e-15,  2.2081547314362957e-17,  2.2293012712626885e-19,
//  1.4505724806862015e-21,  5.6724748192019088e-24,  1.2081232562612244e-26,
//  1.2093961010872282e-29,  4.4708121318609240e-33,  3.8646806884574510e-37,
//  2.4643207251964564e-42,
// // nroots = 29
//  3.2091070260471899e-01,  2.7126015390759434e-01,  1.9372231080136831e-01,
//  1.1677283731866922e-01,  5.9323828445470898e-02,  2.5349392478457165e-02,
//  9.0873545403086370e-03,  2.7242971132887413e-03,  6.8036819444262659e-04,
//  1.4089949985735000e-04,  2.4065325529694293e-05,  3.3683591904564624e-06,
//  3.8347678623247262e-07,  3.5200066343932804e-08,  2.5784329171251308e-09,
//  1.4890103967540035e-10,  6.6820102338953568e-12,  2.2903165842743183e-13,
//  5.8723917058983836e-15,  1.0979718124159402e-16,  1.4502656885515038e-18,
//  1.2998534256895677e-20,  7.5014959155146296e-23,  2.5973065268494646e-25,
//  4.8845679074858355e-28,  4.2994974135956300e-31,  1.3882300680633443e-34,
//  1.0361288228040763e-38,  5.5680352918588278e-44,
// // nroots = 30
//  3.1578042765949238e-01,  2.6840631685517313e-01,  1.9382863687099960e-01,
//  1.1881693127749456e-01,  6.1743746844779984e-02,  2.7150238923080394e-02,
//  1.0078883978552689e-02,  3.1496727855870829e-03,  8.2571803671126003e-04,
//  1.8085360541258893e-04,  3.2934475587777893e-05,  4.9584218331236953e-06,
//  6.1310664099141697e-07,  6.1785017606854071e-08,  5.0289859710017596e-09,
//  3.2715763079828753e-10,  1.6801084533762248e-11,  6.7120850712329025e-13,
//  2.0498413262850772e-14,  4.6855314259072089e-16,  7.8120487098049794e-18,
//  9.2003980457468935e-20,  7.3486452176672533e-22,  3.7752824470360482e-24,
//  1.1615602816842657e-26,  1.9358169994612708e-29,  1.5036325048276650e-32,
//  4.2558250249436302e-36,  2.7529603514345679e-40,  1.2520351346822822e-45,
// // nroots = 31
//  3.1088835901770417e-01,  2.6562205119893828e-01,  1.9382565158599319e-01,
//  1.2069770990611951e-01,  6.4062098330091646e-02,  2.8933723190107209e-02,
//  1.1096799233588306e-02,  3.6046190917707753e-03,  9.8864073763996327e-04,
//  2.2810430848881909e-04,  4.4082312968263375e-05,  7.0996778628839258e-06,
//  9.4734617519597147e-07,  1.0402046551304455e-07,  9.3247728369681139e-09,
//  6.7620297828389661e-10,  3.9244392817292199e-11,  1.8000072378314520e-12,
//  6.4284832978960700e-14,  1.7562292529450302e-15,  3.5926337638018172e-17,
//  5.3612722742496849e-19,  5.6502164272837441e-21,  4.0359700176457077e-23,
//  1.8521346940051287e-25,  5.0810055281854111e-28,  7.5291225128713794e-31,
//  5.1779710958942424e-34,  1.2890636290348067e-37,  7.2526085391619564e-42,
//  2.8025709293189409e-47,
};
